使用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 ...
- poi读写Excel
poi读写Excel 对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细 ...
- 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文件
jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好 poi功能比jxl强大但是比较吃内存,支持计算公式 关于jxl具体可以参考 http:// ...
随机推荐
- set_include_path — 设置 include_path 配置选项为当前脚本设置 include_path 运行时的配置选项。
说明 string set_include_path ( string $new_include_path ) 为当前脚本设置 include_path 运行时的配置选项. 参数 new_includ ...
- java 面试每日一题2
题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 注:如果想单独输出中文的个数和中文符号的个数,只需把isChinese()中的if语句修改 知识补充: java不像C中拥有s ...
- CI分页,搜索之后翻页不能用问题
最近在学习用php的CI框架写一个自己的CMS,遇到了些问题.其中一个就是CI分页的时候,我的URL带有其他参数,才能查出我想要的数据.于是我翻遍了谷歌度娘,终于找到了解决办法,和我想的差不多,就贴 ...
- Annotation实战【自定义AbstractProcessor】
前言 在使用Java的过程中,每个开发人员都接触过@Override, @Deprecated等等各式各样的注解,这些东西是java最基础的一些原生定义好的annotation.本文通过一个实例演示如 ...
- python学习笔记三 函数(基础篇)
函数 内置函数 常用的内建函数: type() 列出指定对象的类型 help() 能够提供详细的帮助信息 dir() 将对象的所有特性列出 vars() 列出当前模块的所有变量 file, ...
- Linux内核中的Kconfig、xx.defconfig、xx.config、Makefile
什么是Kconfig.xx.defconfig.xx.config.Makefile Kconfig: 一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项. xx.deconfig: Li ...
- django学习の模型
orm:对象数据库和模型的映射.如果想以简单的方式去操作数据库,例如用类的方式去操作,就像 p = Person.get(id = 1),那么就必须使得代码和数据库的结构具有映射关系,实现这种关系,你 ...
- Python3基础 用三个双引号 print输出多行文本
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 【leetcode❤python】242. Valid Anagram
class Solution(object): def isAnagram(self, s, t): if sorted(list(s.lower()))==sorted(list ...
- NTT
1 问题描述FFT问题解决的是复数域上的卷积.如果现在的问题是这样:给出两个整数数列$Ai,Bj,0\leq i\leq n-1,0\leq j\leq m-1$,以及素数$P$,计算新数列$Ci=( ...