excel 读取.xml
您本周是否在老板身上尝试过创造性的借口#432? 你被诱惑了吗?
希望您不必这样做。 本系列的第1部分帮助您了解如何使用Java™技术的Microsoft®Excel®电子表格(请参见“阅读,回收和重用:使用Excel,XML和Java技术简化报告的链接,第1部分”中的链接)。 相关主题 )。 只需下载Apache POI并进行设置即可使用,很快,遍历Excel电子表格几乎和遍历公园一样容易。 几乎和绿色一样。
但是读取Excel文件只是一个开始。 本系列向您展示如何使用Apache POI和XML对象模型(XOM)在XML对象中存储Excel文件。 然后,您可以回收这些对象以编写全新的Excel电子表格和XML文件。
样例应用
该示例应用程序包含一个来自虚构的Planet Power公司的Excel电子表格,名为Employee_List.xls 。 大老板说服了Planet Power的最高员工将其薪水的1%捐赠给他最喜欢的事业:基因工程巨大的野生仓鼠行星际保护区(GEE WHIS)。 该示例应用程序将计算数量并创建一个XML报告以赶往避难所。 同时,该应用程序为Big Boss编写了一个Excel电子表格。
要遵循本文中的示例,请下载示例并将文件提取到C:\ Planet Power。 然后,启动Eclipse。
Employees2 Eclipse项目
要导入包含示例应用程序的Employees2 Eclipse项目,请执行以下步骤:
- 在Eclipse中,右键单击Package Explorer,然后单击Import 。
- 展开常规,然后选择现有项目到工作区 。 单击Next ( 图1 )。
图1.将现有项目带入工作空间
- 单击“ 选择根目录”旁边的“ 浏览” ,然后导航到C:\ Planet Power \ Employees2。
- 选择Employees2文件夹,单击“ 确定” ,然后单击“ 完成” ( 图2 )。
图2.完成将项目导入Eclipse
Employees2文件夹应出现在“程序包资源管理器”窗格中。
注意:对于此项目,请在Employees2项目中的src \ default_package下使用文件ExcelXML.java。
入门
在本系列的第1部分中,第一步是导入Apache POI以及异常和文件处理类(请参阅参考资料中的第1部分链接)。 另外,您需要添加一些XML API类以及用于处理数字的类,如清单1所示 。
清单1.导入类(ExcelXML.java)
// File and exception handling imports
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
// Apache POI imports
import org.apache.poi.hssf.usermodel.HSSFCell;
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 org.apache.poi.hssf.usermodel.HSSFDataFormatter;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
// XOM imports
import nu.xom.Document;
import nu.xom.Elements;
import nu.xom.Element;
import nu.xom.Attribute;
import nu.xom.Serializer;
// Imports for later calculations
import java.text.NumberFormat;
导入这些类之后,您就可以开始在main()
进行编程了。
处理文件
清单2中的代码表示文件( IOException
)和数字转换( ParseException
)错误的异常处理结构。
清单2.设置异常处理(ExcelXML.java)
public class ExcelXML {
public static void main(String[] args) {
try {
// Put file and number handling code here.
// End try
}
catch (IOException e) {
System.out.println("File Input/Output Exception!");
}
catch (ParseException e) {
System.out.println("Number Parse Exception!");
}
// End main method
}
// End class block
}
现在,您可以开始使用XOM。
XOM,文档和XML对象
XOM通过将XML解析成代表XML文档碎片的对象,简化了XML的使用。 表示整个XML文档的类是nu.xom.Document
。 在Document
,您可以添加或访问其他作品。 一些使用XML的类包括:
-
nu.xom.Builder
-
nu.xom.Document
-
nu.xom.Elements
-
nu.xom.Element
-
nu.xom.Serializer
XML的主要部分称为元素。 一个元素由一对标签及其之间的内容组成。 这是一个来自名为weather_service.xml的示例文件中的元素的示例。
<dawn>07:00</dawn>
黎明及其括号( <>
)和斜杠( /
)一词称为标签。 内容为07:00 。
元素可以包含其他元素,文本内容或两者。 包含元素称为父元素,而内部元素称为子元素或children 。
在XOM中,元素由nu.xom.Element
对象表示。 一组元素是nu.xom.Elements
对象。
一切美好的根源
要查找元素,请确保每个格式正确的XML文档都使用一个元素: 根元素。 根充当其他所有元素的容器。 如果文档没有根,则它不是正确的XML。
要找到根,请在Document
对象上使用getRootElement()
。 仅获取一个元素就可以打开探索文档的策略。 想和根的孩子一起工作吗? 使用Element.getChildElements()
变体获取所有子元素或具有特定名称的子元素的列表。 想要一个元素? 从Element.getFirstChildElement()
仅获取具有特定名称的第一个子元素。
这看起来很熟悉吗? 遍历XML文档以查找孩子的孩子类似于遍历Excel工作表。
在上一篇文章中,您了解了Apache POI的getStringCellValue()
方法如何从Excel HSSFCell
检索字符串值。 同样,XOM使用Element.getValue()
从XML元素获取字符串内容。