/**
* excel数据导入,默认从第二行开始读取。
*
* @param inStream:导入WBS的Excel文件流
* @param sheetName:Excel的sheet页名称
* @param attributes
* excel列名称
* @param noEmptyColumn
* 是否该列为空,则表示到了结束,不再循环取值。
* @return PRM 的WBS对象
*/
public List<Map<String,?>> getDataFromExcelFile(InputStream inStream,
String sheetName, String[] attributes, int noEmptyColumn) {
List<Map<String,?>> list = new ArrayList<Map<String,?>>();
if (inStream == null)
return null;
HSSFWorkbook wb = null;
try {
wb = new HSSFWorkbook(new POIFSFileSystem(inStream));
} catch (IOException e) {
list = null;
return null;
}
if (wb == null)
return null;
HSSFSheet sheet = wb.getSheet(sheetName);
if (sheet == null)
sheet = wb.getSheetAt(0);
short i = 1;
while (true) {
HSSFRow row = sheet.getRow(i++);
if (row == null) {
break;
}
boolean bool = isEmptyOfSpecialColumn(row, noEmptyColumn);
if (bool) {
break;
}
Map<String,?> map = getAttrVauleFormExcelRow(row, attributes);
list.add(map);
}
return list;
}
/**
* 通过excel一行创建Map对象,
*
* @param row选中的Excel一行
* @param attributes
* 列属性名称,按excel列从左到右的顺序
* @return
*/
private Map<String,?> getAttrVauleFormExcelRow(HSSFRow row, String[] attributes) {
Map<String,Object> map= new HashMap<String,Object>();
if (attributes == null || attributes.length < 1)
return null;
for (int i = 0; i < attributes.length; i++) {
HSSFCell cell = row.getCell(i);
Object value = formatExcelData(cell);
map.put(attributes[i], value);
}
return map;
}
/**
* 判断某行中的指定列值是否为空
*
* @param row
* @param icolumn,首列从0开始。
* @return
*/
private boolean isEmptyOfSpecialColumn(HSSFRow row, int icolumn) {
boolean result = true;
if (row == null)
return result;
else {
HSSFCell cell = row.getCell(icolumn);
Object value = formatExcelData(cell);
if (value == null)
result = true;
else
result = false;
}
return result;
}
/**
* 把从Excel取出的数据进行格式化处理,变成字符串。
*
* @param cell
* @return
*/
private Object formatExcelData(HSSFCell cell) {
Object sData = null;
if (cell == null)
sData = null;
else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
sData = cell.getStringCellValue();
else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
sData = cell.getNumericCellValue();
else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK)
sData = "";
else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN)
sData = cell.getBooleanCellValue();
else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA)
sData = cell.getCellFormula();
else
sData = "excel data format unknown";
return sData;
}
}
分享到:
相关推荐
XSL(Extensible Stylesheet Language)是一种用于转换XML(Extensible Markup Language)文档的语言,它允许开发者通过定义样式表来控制XML数据的呈现方式。在XSL开发中,理解和掌握XSL函数、XSL元素以及XPath是至...
3. **`xsl:value-of`**: 用于输出选定节点的文本内容。 #### 实现过程 1. **加载XML文件**: - 使用JavaScript或其他编程语言加载XML文件。 - 在这个例子中,我们使用了`Microsoft.XMLDOM`对象。 2. **加载XSL...
### XSL基础教程知识点 #### 一、XSL与XML的关系 XSL(Extensible Stylesheet Language,可扩展样式表语言)是一种用于控制XML文档显示的标记语言。它主要用于将XML文档转换为其他格式,例如HTML或PDF。XSL允许...
【标题】"XSL学习3" 涉及的核心知识点主要围绕XML的扩展样式表语言XSL(Extensible Stylesheet Language)展开。XSL是一种用于转换XML文档格式的语言,它能够将XML数据转换成HTML、PDF或其他类型的文档,以便于显示...
【XSL:开启XML的转换之旅】 XML(Extensible Markup Language)是一种用于标记数据的语言,它使得数据结构清晰,易于机器解析和人类阅读。然而,XML文档本身并不包含任何关于如何显示这些数据的信息。这就引入了...
在IT行业中,XSL(Extensible Stylesheet Language)是一种用于转换XML(Extensible Markup Language)文档的语言,而XPath(XML Path Language)则是用于在XML文档中查找信息的查询语言。JavaScript,作为Web开发中...
XSL-FO 简介 XSL-FO 的简介。包括其概念和作用。 XSL-FO 文档 本章将解 XSL-FO 文档的结构。 XSL-FO 区域 本章讲解 XSL-FO 的区域模型(area model)。 XSL-FO 输出 本章讲解 XSL-FO 文档的输出元素(Output ...
3. "xsl_editor":确认了这是一个XSL编辑工具,用于编写和修改XSL样式表。 4. "xslxsl·com":这可能是提供该编辑器的网站或资源的域名,用户可能可以在这里找到更多的信息和支持。 压缩包内的文件名: 1. ...
第一个XML文档 2.XSL入门 3.XSL模板与匹配模式 4.测试模式 5.XSL中的choose 6.运算符,关系与逻辑运算符,特殊字符等 7.XSL函数之一 8.脚本与XSL的结合及应用 9.XSL函数之二(DOM中对象的方法)
<xsl:variable name="array3" select="'element3'"/> <xsl:for-each select="$array1|$array2|$array3"> <p><xsl:value-of select="."/> </xsl:for-each> ``` 这段代码将分别输出"element1"、"element2"和...
3. XSLT转换过程: - **匹配与选择**:XSLT通过XPath表达式来匹配XML文档中的元素,决定哪些元素需要被处理。 - **复制与转换**:默认情况下,XSLT会复制所有未匹配的元素,但可以通过模板规则进行自定义转换。 -...
- **XSL简明教程(3)在客户端的实现.mht**:介绍如何在浏览器环境中实现XSL转换,让XML数据在Web页面上呈现。 9. **XSL学习指南** - **XSL_tour.CHM**:可能是一个完整的XSL参考手册,包含XSL的全面介绍和详细指南...
在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,而XSL(eXtensible Stylesheet Language)则是一种样式表语言,用于转换XML文档的结构和格式。本主题主要关注如何使用XSL解析XML...
3. **Excel格式化**:在XSLT中,我们使用特定的元素和属性来模拟Excel的特性,例如 `<xsl:table>` 表示工作表,`<xsl:row>` 表示行,`<xsl:cell>` 表示单元格。通过设置这些元素的属性,可以控制单元格的样式,如...
XSL由三部分组成:XSLT(XSL Transformations)、XPath(XML Path Language)和XSL-FO(XSL Formatting Objects)。在Java环境中,处理XSL转换通常会涉及到JAXP(Java API for XML Processing)。 XSLT是XSL的主要...
3. **创建Transformer对象**:使用`TransformerFactory`的`newTransformer(Templates)`方法,你可以根据之前加载的模板创建一个`Transformer`对象。 4. **加载XML源**:同样,你需要将要转换的XML文档加载为`Source...
3. **使用XPath选取数据**:在模板中,使用XPath表达式选取XML文档中的特定数据,将其插入到表格的相应位置。 4. **设置表格样式**:通过XSLT控制表格的样式,如边框、颜色、字体等,以提高可读性。 5. **应用转换...
XSLT(XSL Transformations)是实现这一转换的具体语言,它是XSL的一部分,用于编写转换规则。通过XSLT,我们可以定义一系列的模板和规则,将XML文档的结构和内容映射到新的格式上。 XSLT的工作原理是匹配XML文档中...
<xsl:for-each select="tokenize('item1,item2,item3', ',')"> <xsl:value-of select="." /> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> ``` 在这个例子中,我们使用`...
3. XSLT转换:使用XSLT处理器(如Saxon或Xalan)对XML和XSL进行解析和转换。 4. 输出Excel:转换后的结果通常为一个临时的HTML或XML文件,可以被浏览器或专门的工具识别并呈现为Excel格式。 5. 反台处理:服务器端的...