java读写excel文件
近期处理的数据规模比较大,正好又是统计合并的事情,想着借助excel就可以完成了,然后就了解了下java读取excel的事情。
读取的文件主要分两类:xls文件、xlsx文件。xls文件的相关操作用的是jxl.jar包,只要将这个包导入即可。xlsx文件的相关操作是利用apache的poi包。
一、xls文件(一个jar包:jxl.jar)
1)创建
- package jexcel;
- import java.io.*;
- import jxl.*;
- import jxl.write.*;
- /**
- * @author Ken
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
- public class CreateXLS {
- public static void main(String[] args) {
- try {
- //open file.
- WritableWorkbook book = Workbook.createWorkbook(new File("d:/Test.xls"));
- //create Sheet named "Sheet_1". 0 means this is 1st page.
- WritableSheet sheet = book.createSheet("Sheet_1", );
- //define cell column and row in Label Constructor, and cell content write "test".
- //cell is 1st-Column,1st-Row. value is "test".
- Label label = new Label(, , "test");
- //add defined cell above to sheet instance.
- sheet.addCell(label);
- //create cell using add numeric. WARN:necessarily use integrated package-path, otherwise will be throws path-error.
- //cell is 2nd-Column, 1st-Row. value is 789.123.
- jxl.write.Number number = new jxl.write.Number(, , 789.123);
- //add defined cell above to sheet instance.
- sheet.addCell(number);
- //add defined all cell above to case.
- book.write();
- //close file case.
- book.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
2)读取
- package jexcel;
- import java.io.*;
- import jxl.*;
- /**
- * @author Ken
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
- public class ReadXLS {
- public static void main(String[] args) {
- try {
- Workbook book = Workbook.getWorkbook(new File("e:/pos/rule.xls"));
- //get a Sheet object.
- Sheet sheet = book.getSheet();
- //get 1st-Column,1st-Row content.
- // Cell cell = sheet.getCell(1, 2); //先是列序号,然后是行序号,都是从0开始算起
- Cell[] cell=sheet.getColumn();
- for(int i=;i<cell.length;i++){
- String result = cell[i].getContents();
- System.out.println(result);
- }
- book.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
3)修改
- package jexcel;
- import java.io.*;
- import jxl.*;
- import jxl.write.*;
- /**
- * @author Ken
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
- public class UpdateXLS {
- public static void main(String[] args) {
- try {
- //get file.
- Workbook wb = Workbook.getWorkbook(new File("d:/Test.xls"));
- //open a copy file(new file), then write content with same content with Test.xls.
- WritableWorkbook book =
- Workbook.createWorkbook(new File("d:/Test.xls"), wb);
- //add a Sheet.
- WritableSheet sheet = book.createSheet("Sheet_2", );
- sheet.addCell(new Label(, , "test2"));
- book.write();
- book.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
二、xlsx文件(五个jar包:poi-3.8-20120326.jar; poi-ooxml-3.8-20120326.jar; poi-ooxml-schemas-3.8-20120326.jar; xmlbeans-2.3.0.jar; dom4j-1.6.1.jar)
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Date;
- import java.text.SimpleDateFormat;
- import java.util.TimeZone;
- import java.util.logging.Logger;
- import org.apache.poi.xssf.usermodel.XSSFCell;
- import org.apache.poi.xssf.usermodel.XSSFRow;
- import org.apache.poi.xssf.usermodel.XSSFSheet;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- public class xlsx {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- poiExcel("e:/pos/rules.xlsx");
- }
- private static void poiExcel(String saveName){
- try{
- String realPath =saveName;
- File fileDes = new File(realPath);
- InputStream str = new FileInputStream(fileDes);
- XSSFWorkbook xwb = new XSSFWorkbook(str); //利用poi读取excel文件流
- XSSFSheet st = xwb.getSheetAt(); //读取sheet的第一个工作表
- int rows=st.getLastRowNum();//总行数
- int cols;//总列数
- //log.info("========行========"+rows);
- for(int i=;i<rows;i++){
- XSSFRow row=st.getRow(i);//读取某一行数据
- if(row!=null){
- //获取行中所有列数据
- cols=row.getLastCellNum();
- //log.info("========行========"+rows+"=====列========"+cols);
- for(int j=;j<cols;j++){
- XSSFCell cell=row.getCell(j);
- if(cell==null){
- System.out.print(" ");
- }else{
- //判断单元格的数据类型
- switch (cell.getCellType()) {
- case XSSFCell.CELL_TYPE_NUMERIC: // 数字
- System.out.print(cell.getNumericCellValue() + " ");
- break;
- case XSSFCell.CELL_TYPE_STRING: // 字符串
- System.out.print(cell.getStringCellValue() + " ");
- break;
- case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean
- System.out.println(cell.getBooleanCellValue() + " ");
- break;
- case XSSFCell.CELL_TYPE_FORMULA: // 公式
- System.out.print(cell.getCellFormula() + " ");
- break;
- case XSSFCell.CELL_TYPE_BLANK: // 空值
- System.out.println("");
- break;
- case XSSFCell.CELL_TYPE_ERROR: // 故障
- System.out.println("故障");
- break;
- default:
- System.out.print("未知类型 ");
- break;
- }
- }
- }
- }
- }
- }catch(IOException e){
- e.printStackTrace();
- }
- }
- }
代码全是网上贴来的,大家一起分享。。
想把jar包也贴上来的,但是不知道是不支持还是我自己摸索不出来,反正最后是没贴出来。。。
java读写excel文件的更多相关文章
- C++读写EXCEL文件OLE,java读写excel文件POI 对比
C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...
- java读写excel文件( POI解析Excel)
package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...
- 利用java读写Excel文件
一.读取Excel文件内容 java 代码 public static String readExcel(File file){ StringBuffer sb = new StringBuffer( ...
- Java读写Excel文件,利用POI
直接看工具类代码吧, package com.example.demo.util; import com.example.demo.entity.ExcelDataVO; import org.apa ...
- 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)
1.简介 在自动化测试,有些我们的测试数据是放到excel文件中,尤其是在做数据驱动测试的时候,所以需要懂得如何操作获取excel内的内容.由于java不像python那样有直接操作Excle文件的类 ...
- 《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
1.简介 前面介绍了POI可以操作excel,也简单的提到另一个操作excle的工具,本篇介绍一个其他的可以操作excel的工具,但是这个工具有一个前提,excel文件版本只能是97-2003版本,如 ...
- 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
1.简介 今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件 ...
- java读取excel文件(.xls,xlsx,csv)
前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
随机推荐
- 【BZOJ-2229】最小割 最小割树(最大流+分治)
2229: [Zjoi2011]最小割 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1565 Solved: 560[Submit][Status ...
- 洛谷P1774 最接近神的人
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- UVA1555-- Garland(推导+二分)
题意:有n个灯,给定第一盏灯A的高度,接下去每盏灯的高度按照公式计算,求使所有灯都不会落在地上(允许碰触)的B的最低高度. uva 输出 double 用 %f,这一波坑的! #include < ...
- [iOS 图像处理相关]
//使用CGImage获取并修改图片像素 #define Mask8(x) ( (x) & 0xFF ) #define R(x) ( Mask8(x) ) #define G(x) ( Ma ...
- RabbitMQ 通过记日志来看routingkey
RoutingKey 每个项目都需要记录日志,日志则一般会分为多种级别,常见的是 Info.debug.warn.Error 对于前三种日志,在项目运行中会产生大量的消息,但是一般多数情况下是不会用到 ...
- 正则表达式:Pattern类与Matcher类详解
一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式((A)(B(C)))中,存在四个这样的组: 1 ((A)(B(C))) 2 (A) 3 ...
- Chrome控制台 JS调试的一些小技巧
$ $_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的,但它可以做为一个变量使用在你接下来的表达式中. $0~$4则代表了最近5个你选择过的DOM节点.在页面右击选择审查元素,然 ...
- chrome断点调试
chrome断点调试 在编写JavaScript代码时,如果出现了bug,就要不断的去找错误,如果console控制台中提示还好说,可是没有提示恐怕就要费一番周折了.但是有了chrome这个浏览器,我 ...
- js 递归下的循环
的递归下的循环不能使用forEach 可以使用for代替 错误写法 // 获取完整名字 var getFullName = function(code, resultName) { if (code ...
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
http://blog.csdn.net/cjjky/article/details/6441104 在Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSeri ...