作者:乔山办公网日期:
返回目录:excel表格制作
2007版本的需要使用XSSFWorkbook来处zhidao理,如果不确定读取的回excel版本的话可以写的if判断下如果后缀为".xls"创建HSSFWorkbook 否则创建 XSSFWorkbook来对文件进行操作即可.
Workbook excelWB = null;
Sheet oneSheet = null;
Row oneRow = null;
Cell oneCell = null;
.....
if("xls".equals(excFilSuff)){
excelWB = new HSSFWorkbook(excelFile);
}else{
excelWB = new XSSFWorkbook(excelFile);
}
//获取第0个sheet对象
oneSheet = excelWB.getSheetAt(0);
//获取每答行对象
oneRow = oneSheet.getRow(rowNum);
// 获取第几列对象
oneCell = oneRow.getCell(cellNum);
XSSF不能读取百Excel2003以前(包括2003)的版本度,
没需要就按你之前的继续问,如果在读取前判断文件是2003前的版本还是2007的版本,提答供个思路。XSSF和HSSF虽然在不同的包里,但却引用了同一接口内Workbook,
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
各版容本的Excel中测试,没有发生异常
while(rs.next()){
row=sheet.createRow(++rowindex);
for(int cellindex=0;cellindex<head.size();cellindex++){
cell=row.createCell((short)cellindex);
datas=rs.getString(cellindex);
XSSFRichTextString richString = new XSSFRichTextString(datas == null ? "" :datas);
cell.setCellValue(richString.toString());
}
}
刚没看清楚,现在知看道明白了。你应该用内while循环来创建容行,for循环创建列。
XSSF不能读取Excel2003以前(包百括2003)的版本,
没需要就按度你之前的继续,如果在读取前判断知文件是2003前的版本还是2007的版本,提供个思路。XSSF和HSSF虽然在道不同的包里,但却引用了同一回接口Workbook,
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
各版本的Excel中测试答,没有发生异常