poi 输出Excel显示内容

在业务系统中多少回接触到Excel解析。在java开发平台下选择 Apache POI是一个非常明智的选择,POI提供非常完善API来读取或写入Microsoft Office Excel。

目前对导入的数据都会进行二次加工,我们开发模式就是先把Excel中的内容直接原样导入数据库对应的一张数据表中,然后再进行二次加工。什么是原样,那就是我们在excle看到是什么样的,导入的数据就是什么样的,那怎样实现呢?

首先考虑到,exce另存为csv,然后在解析csv就可以,excel另存为csv后,如下

似乎这样就可以了,但用户上传的Excel文件通过后台转换csv文件也麻烦(PS:其实我都不知道怎么转,有知道的朋友还希望能分享下),说好不是用POI的么,那么接下来我们了解下POI中处理Excel的一些信息

从上图得知,POI类中带HSSF的是处理03格式的,XSSF是处理07以上格式的,废话不多说了,先看看原样输出的一个重要角色 DataFormatter,

查阅官方文档,红框的地方清楚说明了,就是现实Excel中的现实的文本

这里对于公式类型的还需要判断下,

1     DataFormatter df = new DataFormatter();
2     if (cell.getCellType() == cell.CELL_TYPE_FORMULA) {
3         FormulaEvaluator formulaEval = wb.getCreationHelper().createFormulaEvaluator();
4         value = df.formatCellValue(cell, formulaEval);
5     } else {
6         value = df.formatCellValue(cell);
7     }

所以就这么一句代码,就取得的单元格中显示的值,算是大工搞成。ps:解析Excle的完整代码

 1 private ArrayList<String[]> GetExcel(String filename)
 2             throws FileNotFoundException, IOException, Exception {
 3         File f = new File(filename);
 4         ArrayList data = new ArrayList();
 5         if (f.exists()) {
 6             InputStream fis = new FileInputStream(f);
 7             Workbook wb = WorkbookFactory.create(fis);
 8             Sheet fst = wb.getSheetAt(0);
 9             int rowcount = fst.getLastRowNum();
10             Row headrow = fst.getRow(0);
11             int colcount = headrow.getLastCellNum();
12             for (int ri = 0; ri <= rowcount; ri++) {
13                 System.out.println("");
14                 System.out.println("第" + ri + "行数据");
15                 String[] colValues = new String[colcount];
16                 Row row = fst.getRow(ri);
17                 for (int i = 0; i < colcount; i++) {
18                     Cell cell = row.getCell(i);
19                     String value = "";
20                     if (cell != null) {
21                         DataFormatter df = new DataFormatter();
22                         if (cell.getCellType() == cell.CELL_TYPE_FORMULA) {
23                             FormulaEvaluator formulaEval = wb.getCreationHelper().createFormulaEvaluator();
24                             value = df.formatCellValue(cell, formulaEval);
25                         } else {
26                             value = df.formatCellValue(cell);
27                         }
28                     }
29                     colValues[i] = value;
30                     System.out.print(colValues[i] + "--");
31                 }
32                 data.add(colValues);
33             }
34         }
35         f.delete();
36         return data;
37     }

2015-12-04

时间: 2024-07-30 13:58:40

poi 输出Excel显示内容的相关文章

poi导出excel

Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能,介绍poi导出excel功能实现案例,算比较常用的功能实现以及导出excel需要注意的地方,采用的是poi-3.8-20120326.jar,poi-ooxml-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar 输出表格 poi输出excel最基本是输

将二维数组输出到excel,显示带行头的表以及列能手动改变宽度

将二维数组输出到excel,例子在我的helpfunction里面 简单的例子在这:http://www.blogjava.net/hezhi/articles/POI.html Poi包在这里下载:http://mvnrepository.com/artifact/org.apache.poi/poi/3.11-beta3 显示带行头的表以及列能手动改变宽度 http://erbo2008.iteye.com/blog/547182

POI读取Excel内容格式化

在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其实最希望的方式是Excel是什么,那POI取出来就是什么,不要搞任何转换. 网上搜罗各种格式化方式后,找到最满意的一种: import org.apache.poi.hssf.usermodel.HSSFDataFormatter; import org.apache.poi.hssf.usermo

读取Excel文件内容在Web上显示

点击事件代码.cs protected void Button1_Click(object sender, EventArgs e) { string strPath = "d:/test.xls"; string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + strPath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=

POI操作Excel

Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推.行则使用数字表示,例如:A3 表示第三行第一列,E5表示第五行第五列. POI工具包 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 9

POI导出EXCEL经典实现

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

POI操作EXCEL(二)

原文转自:http://www.tqcto.com/article/code/295025.html java当初把核心处理设成Unicode,带来的好处是另代码适应了多语言环境.然而由于老外的英语只有26个字母,有些情况下,一些程序员用8 位的byte处理,一不小心就去掉了CJK的高位.或者是由于习惯在程序中采用硬编码,还有多种原因,使得许多java应用在CJK的处理上很烦恼.还好 在POI HSSF中考虑到这个问题,可以设置encoding为双字节. POI可以到www.apache.org

POI导出EXCEL经典实现(转)

http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能.XS

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab