poi读写Excel
poi读写Excel
对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作。
在这里介绍一下我在项目中用到的一个操作Excel的工具——POI。关于POI的一些概念,网络上很多,详细信息大家可以自行百度,我在这里只做简单介绍。POI是apache的类库,主要是为java开发人员提供对Office文件(word、ppt、Excel)处理的支持。我这里主要给出几个例子来说明演示一下。
准备工作
我用的版本是3.10.1,需要的jar有:
- dom4j.jar
- log4j-1.2.13.jar
- poi-3.10.1-20140818.jar
- poi-ooxml-3.10.1-20140818.jar
- poi-ooxml-schemas-3.10.1-20140818.jar
- poi-scratchpad-3.10.1-20140818.jar
- public void testReadExcel() {
- try {
- // 读取Excel
- Workbook wb = new HSSFWorkbook(new FileInputStream("d:\\2.xls"));
- // 获取sheet数目
- for (int t = 0; t < wb.getNumberOfSheets(); t++) {
- Sheet sheet = wb.getSheetAt(t);
- Row row = null;
- int lastRowNum = sheet.getLastRowNum();
- // 循环读取
- for (int i = 0; i <= lastRowNum; i++) {
- row = sheet.getRow(i);
- if (row != null) {
- // 获取每一列的值
- for (int j = 0; j < row.getLastCellNum(); j++) {
- Cell cell = row.getCell(j);
- String value = getCellValue(cell) ;
- if(!value.equals("")){
- System.out.print(value + " | ");
- }
- }
- System.out.println();
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
用到了一个方法:
- /***
- * 读取单元格的值
- *
- * @Title: getCellValue
- * @Date : 2014-9-11 上午10:52:07
- * @param cell
- * @return
- */
- private String getCellValue(Cell cell) {
- Object result = "";
- if (cell != null) {
- switch (cell.getCellType()) {
- case Cell.CELL_TYPE_STRING:
- result = cell.getStringCellValue();
- break;
- case Cell.CELL_TYPE_NUMERIC:
- result = cell.getNumericCellValue();
- break;
- case Cell.CELL_TYPE_BOOLEAN:
- result = cell.getBooleanCellValue();
- break;
- case Cell.CELL_TYPE_FORMULA:
- result = cell.getCellFormula();
- break;
- case Cell.CELL_TYPE_ERROR:
- result = cell.getErrorCellValue();
- break;
- case Cell.CELL_TYPE_BLANK:
- break;
- default:
- break;
- }
- }
- return result.toString();
- }
解释一下,首先将文件读入到工作簿Workbook中,Workbook是一个接口,他有2个实现:HSSFWorkbook和XSSFWorkbook。前者是用来读取97-03版的Excel,扩展名为xls,后者是读取07及以后的版本,扩展名为xlsx。读入到workbook中,然后循环所有的sheet,在sheet循环所有的有效行和有效列。其中sheet.getLastRowNum()获得最后一行的索引值(从0开始),而sheet.getPhysicalNumberOfRows()则是获取的最后一行的行号(从1开始)。这里要注意的是循环列不是在sheet中循环,而是在row中循环。
- public void testWriteExcel() {
- String excelPath = "d:/3.xls";
- Workbook workbook = null;
- try {
- // XSSFWorkbook used for .xslx (>= 2007), HSSWorkbook for 03 .xsl
- workbook = new HSSFWorkbook();// XSSFWorkbook();//WorkbookFactory.create(inputStream);
- } catch (Exception e) {
- System.out.println("创建Excel失败: ");
- e.printStackTrace();
- }
- if (workbook != null) {
- Sheet sheet = workbook.createSheet("测试数据");
- Row row0 = sheet.createRow(0);
- for (int i = 0; i < 6; i++) {
- Cell cell = row0.createCell(i, Cell.CELL_TYPE_STRING);
- cell.setCellValue("列标题" + i );
- //sheet.autoSizeColumn(i);//自动调整宽度
- }
- for (int rowNum = 1; rowNum < 10; rowNum++) {
- Row row = sheet.createRow(rowNum);
- for (int i = 0; i < 6; i++) {
- Cell cell = row.createCell(i, Cell.CELL_TYPE_STRING);
- cell.setCellValue("单元格" + String.valueOf(rowNum + 1)
- + String.valueOf(i + 1));
- }
- }
- try {
- FileOutputStream outputStream = new FileOutputStream(excelPath);
- workbook.write(outputStream);
- outputStream.flush();
- outputStream.close();
- } catch (Exception e) {
- System.out .println("写入Excel失败: ");
- e.printStackTrace();
- }
- }
- }
效果图如下:
怎么样,很简单吧。只要你使用了poi,不管你有没有安装Office,都可以完美的操作Office文件,小伙伴们,都快来试试看吧。
poi读写Excel的更多相关文章
- jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL
这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...
- [转]POI读写Excel 修改
[转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
- POI读写Excel简述之写入
二.POI写入Excel文件(以Excel2003版为例,2007版就是根据文件扩展名xlsx将HSSFWorkbook换为XSSFWorkbook,及其Sheet.Row.Cell也相应替换) 1. ...
- POI读写Excel简述之读取
一.POI读取Excel文件(以Excel2003版为例,2007版就是根据文件扩展名xlsx将HSSFWorkbook换为XSSFWorkbook,及其Sheet.Row.Cell也相应替换) // ...
- 使用poi读写excel文件
使用poi库测试了一下读取excel文件,效果不错,跟大家分享一下. 第一列是数值型,第二列是字符型,代码如下: package poi; import java.io.FileInputStream ...
- Apache POI读写Excel
Apache POI是Apache软件基金会的开放源码函式库,POIAPI给Java程序对Microsoft Office格式档案读和写的功能. 官方文档 [https://poi.apache.or ...
- 使用poi读写Excel
对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细信息大家可以自行百度, ...
- poi读写Excel文件
jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好 poi功能比jxl强大但是比较吃内存,支持计算公式 关于jxl具体可以参考 http:// ...
随机推荐
- 【译】x86程序员手册20-6.3.4门描述符守卫程序入口
6.3.4 Gate Descriptors Guard Procedure Entry Points 门描述符守卫程序入口 To provide protection for control tra ...
- http服务器与https服务器的区别
1.HTTPS服务器使用的是HTTPS协议,而HTTP使用的是HTTP协议. 2.HTTPS服务器需要向证书授权中心申请证书,一般免费证书很少,需要交费. 3.HTTP服务器与客户端传递的是明文数据, ...
- Python 之mysql类封装
import pymysql class MysqlHelper(object): conn = None def __init__(self, host, username, password, d ...
- ES6 中set的用法
- transition-分栏按钮动画
=> css: .cateBtn{ position: relative; background: #fff; border: 1px solid #ddd; border-radius: ...
- 怎么选择最适合自己的Python培训机构?
Python培训已经成为入门Python的一个重要途径,它的优势在于学习知识的系统性.快速性和实用性.Python培训毕业的学员大多数拥有较强的实战动手能力,能够较快上手,更符合企业需求. 不过,大部 ...
- ie9以下提示用户升级浏览器
<!--[if lt IE 9]> <div style='border: 4px solid #FFF500; background: #FDFDC8; text-align: c ...
- 关于static关键字的思考
静态方法是否能调用非静态成员变量? static关键字具有如下特点: 一.static关键字修饰的属性/方法可以通过类名直接调用,而不必先new一个对象. 二.sta ...
- 【JAVA】简陋的学生信息管理系统
因为之前写了一个学生信息管理系统,但还是处于命令行界面,不美观,于是打算做一个完整的界面出来. 在网上查阅资料后发现C++本身是不支持图形化界面的(可以使用第三方的Qt来做) 权衡之下还是选择了JAV ...
- PAT 1109 Group Photo
Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...