处理excel主要是三层循环,对工作表的循环,对行数的循环,对单元格的循环
try {
is = new FileInputStream(file);
HSSFWorkbook wb=null;
try {
//office 2003和以前版本
wb = new HSSFWorkbook(new POIFSFileSystem(is));
} catch (RuntimeException e) {
//office 2007版本
XSSFWorkbook wb1 = new XSSFWorkbook(file.getPath());
return import2007(wb1);
}
//工作表数
int sheetNum = wb.getNumberOfSheets();
for (int i = 0; i < sheetNum ; i++) {
HSSFSheet childSheet = wb.getSheetAt(i);
int rowNum = childSheet.getLastRowNum();
for (int j = childSheet.getFirstRowNum(); j < rowNum; j++) {
HSSFRow row = childSheet.getRow(j);
if(row!=null){
int cellNum = row.getLastCellNum();
String[] str=new String[cellNum];
for (int k = 0; k < cellNum; k++) {
if(row.getCell(k)!=null){
str[k]=row.getCell(k).toString();
}else{
str[k]=null;
}
}
}
}
}
}
//2007版本excel
public String import2007(XSSFWorkbook wb){
StockderDAO dao=(StockderDAO)getDao();
int sheetNum = wb.getNumberOfSheets();
for (int i = 0; i <sheetNum ; i++) {
XSSFSheet childSheet = wb.getSheetAt(i);
int rowNum = childSheet.getLastRowNum();
for (int j = childSheet.getFirstRowNum(); j < rowNum; j++) {
XSSFRow row = childSheet.getRow(j);
int cellNum = row.getLastCellNum();
String[] str=new String[cellNum];
for (int k = 0; k < cellNum; k++) {
if(row.getCell(k)!=null){
str[k]=row.getCell(k).toString();
}else{
str[k]=null;
}
}
if(j!=0){
boolean flag=dao.getBuyDistinct(str,this.request.getParameterMap());
if(flag){
XSSFCell cel=row.createCell(cellNum );
cel.setCellValue("R");
}
}
}
}
ServletOutputStream fOut=null;
try {
fOut=response.getOutputStream();
wb.write( fOut);
fOut.flush();
fOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return NONE;
}
关于excel不可读取的内容:当我们把2007的excel另存为 2003excel的格式的时候,然后以2003excel导入到程序,这时如生成的是2003excel,而原本的2007excel如果有安全设置或宏 在打开excel的时候就 弹出 有些内容不可读取的提示!
下面的附件 就是导入2007的excel所需要的jar包!
分享到:
相关推荐
Apache POI导入和导出Excel文件
Poi强大的操作技术方便了我们开发,Apache POI导入数据到Excel电子表格
apache poi 读取 Excel 的 jar 包 博文链接:https://wxinpeng.iteye.com/blog/231895
apache POI,文件读写 ,excel 对于使用apache poi 解析微软excel的一些文件
poi apache-poi导入实例 导入excel 利用java的apache-poi读取每一行每一列,导入excel数据,两个for循环出来的[ ][ ] 承装数据
自己花了几天时间写的基于Apache POI的Java 读取excel文件,功能还是比较齐全
Apache poi 操作 excel 文件压缩包,亲测可用
使用Apache POI的3.16版实现,Excel模板填充数据导出Excel报表
poi导入导出excel生成报表
poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出
POI导入excel大数据处理,支持excel2003,2007, 有例子,可以直接运行
这个是使用java语言 poi导入excel到数据库中,同时使用了xml对excel的每个单元格数据进行了非空验证。经测试,导入数据库成功。
java_poi实现excel导入导出功能,有详细的注解
利用apache包来完成excel导入导出 利用apache包来完成excel导入导出
poi导入/导出Excel表格,合并单元格的读取和设置
Apache POI Excel操作 需要的文档,.介绍,相关jar包,maven中的配置等,比较全面
Java使用apache POI读取xlsx代码以及相关jar包
poi就是批量的操作文件或数据的导入以及导出。,poi导入excel表需要的jar
poi excel poi excel poi excel poi excel poi excel poi excel poi excel poi excel
Apache Poi Excel导出 博文链接:https://zhiminsun.iteye.com/blog/1883347