java将xml转为xls文件
在Java中实现DOM文档和XML文件互相转换 文简要描述了DOM的概念和内部逻辑结构,实例讲述DOM文档操作和XML文件互相转换的java实现过程。
1. DOM简介 目前,W3C已于2000年11月13日推出了规范DOM level 2。
文档对象模型(DOM)是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现。
该模型定义了THML和XML文件在内存中的逻辑结构(即为文档),提供了访问、存取THML和XML文件的方法。
利用DOM规范,可以实现DOM 文档和XML之间的相互转换,遍历、操作相应DOM文档的内容。
可以说,要自由的操纵XML文件,就要用到DOM规范。
2. DOM内部逻辑结构 DOM文档中的逻辑结构可以用节点树的形式进行表述。
通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。
DOM的文档节点有Document、Element、Comment、Type等等节点类型,其中每一个DOM文档必须有一个Document节点,并且为节点树的根节点。
它可以有子节点,或者叶子节点如Text节点、Comment节点等。
任何的格式良好的XML文件中的每一个元素均有DOM文档中的一个节点类型与之对应。
利用DOM接口将XML文件转化成DOM文档后,我们就可以自由的处理XML文件了。
3. java中的DOM接口 DOM规范提供的API的规范,目前Sun公司推出的jdk1.4测试版中的java API遵循了 DOM level 2 Coe推荐接口的语义说明,提供了相应的java语言的实现。
在og.xml.dom中,jkd1.4提供了Document、DocumentType、Node、NodeList、Element、Text等接口,这些接口均是访问DOM文档所必须的。
我们可以利用这些接口创建、遍历、修改DOM文档。
在javax.xml.pases中,jkd1.4提供的DoumentBuilde和DocumentBuildeFactoy组合可以对XML文件进行解析,转换成DOM文档。
在javax.xml.tansfom.dom和javax.xml.tansfom.steam中,jdk1.4提供了DOMSouce类和SteamSouce类,可以用来将更新后的DOM文档写入生成的XML文件中。
4. 例程 4.1 将XML文件转化成DOM文档 这个过程是获得一个XML文件解析器,解析XML文件转化成DOM文档的过程。
Jdk1.4中,Document接口描述了对应于整个XML文件的文档树,提供了对文档数据的访问,是该步骤的目标。
Document接口可以从类DocumentBuilde中获取,该类包含了从XML文档获得DOM文档实例的API。
XML的解析器可以从类DocumentBuildeFactoy中获取。
在jdk1.4中,XML文件转化成DOM文档可以有如下代码实现
如何用java实现xml文件转excel
package com.wds.excelxml; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.NumberFormat; import java.text.ParseException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDataFormatter; import org.apache.poi.hssf.usermodel.HSSFHyperlink; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import nu.xom.Attribute; import nu.xom.Document; import nu.xom.Element; import nu.xom.Elements; import nu.xom.Serializer; public class Excelxml { public static void main(String[] args) { excelxml(); } /** * 从Excel到xml * 从xml到Excel */ private static void excelxml(){ /* * 首先创建一个xml文档 * 要创建xml文档,首先创建一个根元素 */ Element reportRoot=new Element("sheet"); Document xmlReport=new Document(reportRoot); try { //读取Excel文件 FileInputStream excelFIS=new FileInputStream("D:\\JavaTest\\Employee_List.xls"); //创建Excel工作表 HSSFWorkbook excelWB=new HSSFWorkbook(excelFIS); //获得Excel工作簿 HSSFSheet excelSheet=excelWB.getSheetAt(0); //获得工作簿的行数 int rows=excelSheet.getPhysicalNumberOfRows(); //遍历工作簿的行 for(int rowIndex=0; rowIndex HSSFRow oneRow=excelSheet.getRow(rowIndex); if(oneRow==null){ continue; } //在迭代每一行的时候,创建xml的行元素 Element rowElement=new Element("row"); //获得当前行的单元格数 int cells=oneRow.getPhysicalNumberOfCells(); //遍历行中的每一个单元格 for(int cellIndex=0;cellIndex HSSFCell oneCell=oneRow.getCell(cellIndex); if(oneCell==null){ continue; } //设置元素的默认名称 String elementName="header"; //获得单元格所在列位置 int cellColumnIndex=oneCell.getColumnIndex(); if(rowIndex>0){ elementName=reportRoot.getFirstChildElement("row").getChild(cellColumnIndex).getValue(); } /* * 去掉非法字符 */ elementName = elementName.replaceAll("[\\P{ascii}]",""); elementName = elementName.replaceAll(" ", ""); Element cellElement = new Element(elementName); //添加属性和元素 //String attributeValue=oneCell.getCellStyle().getDataFormatString(); //Attribute dataFormatAttribute=new Attribute("dataFormat", attributeValue); //cellElement.addAttribute(dataFormatAttribute); /* * 根据不同的属性添加 */ Attribute strTypeAttribute=null; switch (oneCell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strTypeAttribute=new Attribute("dataType","String"); cellElement.addAttribute(strTypeAttribute); cellElement.appendChild(oneCell.getStringCellValue()); rowElement.appendChild(cellElement); break; case HSSFCell.CELL_TYPE_NUMERIC: strTypeAttribute=new Attribute("dataType","Numeric"); cellElement.addAttribute(strTypeAttribute); HSSFDataFormatter dataFormatter=new HSSFDataFormatter(); String cellFormatted=dataFormatter.formatCellValue(oneCell); cellElement.appendChild(cellFormatted); rowElement.appendChild(cellElement); break; } } if(rowElement.getChildCount()>0){ reportRoot.appendChild(rowElement); } //System.out.println(xmlReport.toXML()); }
怎么将XML文档转成WORD文档
争议write.io.SAXReader; public class xmlToExcel { private static jetsennet.logger.QueryTable; import jetsennet.sqlclient.SqlClientObjFactory; import jetsennet.sqlclient.SqlCondition; import jetsennet; private static String XSD_FILE_PATH = "jcmp/.WritableFont titleFont = new jxl.write.WritableFont(WritableFont.createFont(".getProperty("test.xls").sqlclient; import jetsennet.util.Map; import javax.jws.WebParam, false).sqlclient;//.SqlQuery; import jetsennet.sqlclient.SqlRelationType; import jetsennet.sqlclient.TableJoinType; import jetsennet.util; import jxl;)); private static ISqlExecutor sqlExecutor = SqlClientObjFactory.StringUtil; import jxl.Workbook;).getLogger(" import jxl; import jetsennet.Label; static jxl; import jetsennet;).getProperty(".write, DbConfig.WritableCellFormat; import jxl.write.WritableFont; import java.util.SQLException; import java.write.dom4j.File; import java;mcc_dburl"), DbConfig.getProperty("mcc_dbuser"), DbConfig.getProperty("mcc_dbpwd" import org.contentmanage.List; import java, DbConfig.dom4j.sql.logger.LogManager;JetsenNet.JCMP".ILog logger = jetsennet.io.IOException; import java;cmp_dbuser".Element:/temp/, DbConfig; import jetsennet.write; 宋 体 "), 10, WritableFont.BOLD;mcc_driver" import jetsennet.getProperty(".getProperty(" private static ConnectionInfo cmpConnectionString = new ConnectionInfo(DbConfig.getProperty("cmp_driver"), DbConfig.getProperty("cmp_dburl".sqlclient.WSResult; import jetsennet.sqlclient.ConnectionInfo.DbConfig; import jetsennet.sqlclient.ISqlExecutor; 当前列表头行号 static boolean addcelltitle = true.util.HashMap; import java;".net;C;); WritableWorkbook workbook; try { workbook = Workbook.createWorkbook(file); //processActivity(workbook, "4023,4025,4007,4024,4026", "200101,200103,200101,200102,200104"); processActivity(workbook, "4023,4025,4007", "200101,200101,200101"); workbook.write(); workbook.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("OK?"); } public static void processActivity(WritableWorkbook workBook, String obj_id, String obj_subtype) throws Exception { OldObjtype = ""; celltitlenow = 0; addcelltitle = true; rowtitlenow =0; WritableSheet sheet = workBook.createSheet("sheet1", 0); /****/ /** 导出ID **/ String[] ids = obj_id.split(","); /** 导出类型 **/ String[] idt = obj_subtype.split(","); /** 导出个数 **/ int idsl = ids.length; /** 定义列宽 **/ int cellwihth = 20; xExcelType xt = new xExcelType(); xt.exShowType = 1; if (xt.exShowType == 1) { addcelltitle = true; } else { addcelltitle = false; } // ******************主表/结构定义 // 200101 xmlStruct mainXmlStruct1 = new xmlStruct(); mainXmlStruct1.tableName = "CM10_OBJECT"; mainXmlStruct1.tableCName = "活动信息"; mainXmlStruct1.tableCalssField = "OBJ_SUBTYPE"; mainXmlStruct1.tableCalssCName.put("200101", "院团大事"); mainXmlStruct1.tableCalssCName.put("200102", "院团出访"); mainXmlStruct1.tableCalssCName.put("200103", "院团专家交流"); HashMap test1 = new HashMap (); test1.put("0", "新建"); test1.put("100", "完成"); mainXmlStruct1.tableFilesClassValue.put("OBJ_STATE", test1); mainXmlStruct1.tableFiles = new String[][] { { "OBJ_NAME", "活 动名称" }, { "FIELD_1", "活动内容简介" }, { "FIELD_2", "活动开始时间" }, { "FIELD_3", "活动结束时间" } }; xt.alltables.put("200101", mainXmlStruct1); xt.alltables.put("200102", mainXmlStruct1); xt.alltables.put("200103", mainXmlStruct1); // 200104 xmlStruct mainXmlStruct2 = new xmlStruct(); mainXmlStruct2.tableName = "CM10_OBJECT"; mainXmlStruct2.tableCName = "活动信息"; mainXmlStruct2.tableCalssField = "OBJ_SUBTYPE"; mainXmlStruct2.tableCalssCName.put("200104", "院团演出"); mainXmlStruct2.tableFiles = new String[][] { { "OBJ_NAME", "活 动名称" }, { "FIELD_2", "活动开始时间" }, { "FIELD_3", "活动结束时间" } }; xt.alltables.put("200104", mainXmlStruct2); // 20010401 xmlStruct mainXmlStruct3 = new xmlStruct(); mainXmlStruct3.tableName = "CM10_OBJECT"; mainXmlStruct3.tableCalssField = "OBJ_SUBTYPE"; mainXmlStruct3.tableCalssCName.put("20010401", "演出日志"); // HashMap showType_hm = getHMctroWord("20010401"); // mainXmlStruct1.tableFilesClassValue.put("FIELD_3", showType_hm); mainXmlStruct3.tableFiles = new String[][] { { "FIELD_1", "演出 时间" }, { "FIELD_2...
如何在Java中将Excel转化为XML格式文件
实现思路:直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取记录写道xml文件中,因为我这里的实际问题是把多个excel表,每个表中又有多个sheet工作薄,这样我先导入数据库中,也方便修改和处理.这样,需要写两个类:XlsToAccess类,用来实现从excel文件根据事先约定的格式,按照数据库设计字段存放进去AccessToXml类,用来实现从access文件数据库中的记录按约定格式写到xml文件中去然后还需要一个主运行窗口类XlsToXml,这个类我们使用eclipse插件SWT Designer来完成最后把工程打成JAR包,再用NativeJ将Jar包生成为可执行的exe文件
转载请注明出处51数据库 » java用xml转word文档