近期处理的数据规模比较大,正好又是统计合并的事情,想着借助excel就可以完成了,然后就了解了下java读取excel的事情。

  读取的文件主要分两类:xls文件、xlsx文件。xls文件的相关操作用的是jxl.jar包,只要将这个包导入即可。xlsx文件的相关操作是利用apache的poi包。

一、xls文件(一个jar包:jxl.jar)

1)创建

  1. package jexcel;
  2.  
  3. import java.io.*;
  4. import jxl.*;
  5. import jxl.write.*;
  6.  
  7. /**
  8. * @author Ken
  9. *
  10. * To change the template for this generated type comment go to
  11. * Window>Preferences>Java>Code Generation>Code and Comments
  12. */
  13. public class CreateXLS {
  14.  
  15. public static void main(String[] args) {
  16. try {
  17. //open file.
  18. WritableWorkbook book = Workbook.createWorkbook(new File("d:/Test.xls"));
  19.  
  20. //create Sheet named "Sheet_1". 0 means this is 1st page.
  21. WritableSheet sheet = book.createSheet("Sheet_1", );
  22.  
  23. //define cell column and row in Label Constructor, and cell content write "test".
  24. //cell is 1st-Column,1st-Row. value is "test".
  25. Label label = new Label(, , "test");
  26. //add defined cell above to sheet instance.
  27. sheet.addCell(label);
  28.  
  29. //create cell using add numeric. WARN:necessarily use integrated package-path, otherwise will be throws path-error.
  30. //cell is 2nd-Column, 1st-Row. value is 789.123.
  31. jxl.write.Number number = new jxl.write.Number(, , 789.123);
  32. //add defined cell above to sheet instance.
  33. sheet.addCell(number);
  34.  
  35. //add defined all cell above to case.
  36. book.write();
  37. //close file case.
  38. book.close();
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. }

2)读取

  1. package jexcel;
  2. import java.io.*;
  3. import jxl.*;
  4.  
  5. /**
  6. * @author Ken
  7. *
  8. * To change the template for this generated type comment go to
  9. * Window>Preferences>Java>Code Generation>Code and Comments
  10. */
  11. public class ReadXLS {
  12.  
  13. public static void main(String[] args) {
  14. try {
  15. Workbook book = Workbook.getWorkbook(new File("e:/pos/rule.xls"));
  16. //get a Sheet object.
  17. Sheet sheet = book.getSheet();
  18. //get 1st-Column,1st-Row content.
  19. // Cell cell = sheet.getCell(1, 2); //先是列序号,然后是行序号,都是从0开始算起
  20. Cell[] cell=sheet.getColumn();
  21. for(int i=;i<cell.length;i++){
  22. String result = cell[i].getContents();
  23. System.out.println(result);
  24. }
  25.  
  26. book.close();
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30.  
  31. }
  32. }

3)修改

  1. package jexcel;
  2.  
  3. import java.io.*;
  4. import jxl.*;
  5. import jxl.write.*;
  6.  
  7. /**
  8. * @author Ken
  9. *
  10. * To change the template for this generated type comment go to
  11. * Window>Preferences>Java>Code Generation>Code and Comments
  12. */
  13. public class UpdateXLS {
  14.  
  15. public static void main(String[] args) {
  16. try {
  17. //get file.
  18. Workbook wb = Workbook.getWorkbook(new File("d:/Test.xls"));
  19. //open a copy file(new file), then write content with same content with Test.xls.
  20. WritableWorkbook book =
  21. Workbook.createWorkbook(new File("d:/Test.xls"), wb);
  22. //add a Sheet.
  23. WritableSheet sheet = book.createSheet("Sheet_2", );
  24. sheet.addCell(new Label(, , "test2"));
  25. book.write();
  26. book.close();
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }

二、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)

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.sql.Date;
  6. import java.text.SimpleDateFormat;
  7. import java.util.TimeZone;
  8. import java.util.logging.Logger;
  9.  
  10. import org.apache.poi.xssf.usermodel.XSSFCell;
  11. import org.apache.poi.xssf.usermodel.XSSFRow;
  12. import org.apache.poi.xssf.usermodel.XSSFSheet;
  13. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  14.  
  15. public class xlsx {
  16.  
  17. public static void main(String[] args) {
  18. // TODO Auto-generated method stub
  19. poiExcel("e:/pos/rules.xlsx");
  20. }
  21.  
  22. private static void poiExcel(String saveName){
  23. try{
  24. String realPath =saveName;
  25. File fileDes = new File(realPath);
  26. InputStream str = new FileInputStream(fileDes);
  27. XSSFWorkbook xwb = new XSSFWorkbook(str); //利用poi读取excel文件流
  28. XSSFSheet st = xwb.getSheetAt(); //读取sheet的第一个工作表
  29. int rows=st.getLastRowNum();//总行数
  30. int cols;//总列数
  31. //log.info("========行========"+rows);
  32. for(int i=;i<rows;i++){
  33. XSSFRow row=st.getRow(i);//读取某一行数据
  34. if(row!=null){
  35. //获取行中所有列数据
  36. cols=row.getLastCellNum();
  37. //log.info("========行========"+rows+"=====列========"+cols);
  38.  
  39. for(int j=;j<cols;j++){
  40. XSSFCell cell=row.getCell(j);
  41. if(cell==null){
  42. System.out.print(" ");
  43. }else{
  44. //判断单元格的数据类型
  45. switch (cell.getCellType()) {
  46. case XSSFCell.CELL_TYPE_NUMERIC: // 数字
  47. System.out.print(cell.getNumericCellValue() + " ");
  48. break;
  49. case XSSFCell.CELL_TYPE_STRING: // 字符串
  50. System.out.print(cell.getStringCellValue() + " ");
  51. break;
  52. case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean
  53. System.out.println(cell.getBooleanCellValue() + " ");
  54. break;
  55. case XSSFCell.CELL_TYPE_FORMULA: // 公式
  56. System.out.print(cell.getCellFormula() + " ");
  57. break;
  58. case XSSFCell.CELL_TYPE_BLANK: // 空值
  59. System.out.println("");
  60. break;
  61. case XSSFCell.CELL_TYPE_ERROR: // 故障
  62. System.out.println("故障");
  63. break;
  64. default:
  65. System.out.print("未知类型 ");
  66. break;
  67. }
  68. }
  69. }
  70.  
  71. }
  72. }
  73. }catch(IOException e){
  74. e.printStackTrace();
  75. }
  76.  
  77. }
  78.  
  79. }

代码全是网上贴来的,大家一起分享。。

想把jar包也贴上来的,但是不知道是不支持还是我自己摸索不出来,反正最后是没贴出来。。。

java读写excel文件的更多相关文章

  1. C++读写EXCEL文件OLE,java读写excel文件POI 对比

    C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...

  2. java读写excel文件( POI解析Excel)

    package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...

  3. 利用java读写Excel文件

    一.读取Excel文件内容 java 代码 public static String readExcel(File file){ StringBuffer sb = new StringBuffer( ...

  4. Java读写Excel文件,利用POI

    直接看工具类代码吧, package com.example.demo.util; import com.example.demo.entity.ExcelDataVO; import org.apa ...

  5. 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)

    1.简介 在自动化测试,有些我们的测试数据是放到excel文件中,尤其是在做数据驱动测试的时候,所以需要懂得如何操作获取excel内的内容.由于java不像python那样有直接操作Excle文件的类 ...

  6. 《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)

    1.简介 前面介绍了POI可以操作excel,也简单的提到另一个操作excle的工具,本篇介绍一个其他的可以操作excel的工具,但是这个工具有一个前提,excel文件版本只能是97-2003版本,如 ...

  7. 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)

    1.简介 今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件 ...

  8. java读取excel文件(.xls,xlsx,csv)

    前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...

  9. Apache POI 读写 Excel 文件

    目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...

随机推荐

  1. 【BZOJ-2229】最小割 最小割树(最大流+分治)

    2229: [Zjoi2011]最小割 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1565  Solved: 560[Submit][Status ...

  2. 洛谷P1774 最接近神的人

    题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...

  3. UVA1555-- Garland(推导+二分)

    题意:有n个灯,给定第一盏灯A的高度,接下去每盏灯的高度按照公式计算,求使所有灯都不会落在地上(允许碰触)的B的最低高度. uva 输出 double 用 %f,这一波坑的! #include < ...

  4. [iOS 图像处理相关]

    //使用CGImage获取并修改图片像素 #define Mask8(x) ( (x) & 0xFF ) #define R(x) ( Mask8(x) ) #define G(x) ( Ma ...

  5. RabbitMQ 通过记日志来看routingkey

    RoutingKey 每个项目都需要记录日志,日志则一般会分为多种级别,常见的是 Info.debug.warn.Error 对于前三种日志,在项目运行中会产生大量的消息,但是一般多数情况下是不会用到 ...

  6. 正则表达式:Pattern类与Matcher类详解

    一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式((A)(B(C)))中,存在四个这样的组: 1     ((A)(B(C))) 2     (A) 3  ...

  7. Chrome控制台 JS调试的一些小技巧

    $ $_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的,但它可以做为一个变量使用在你接下来的表达式中. $0~$4则代表了最近5个你选择过的DOM节点.在页面右击选择审查元素,然 ...

  8. chrome断点调试

    chrome断点调试 在编写JavaScript代码时,如果出现了bug,就要不断的去找错误,如果console控制台中提示还好说,可是没有提示恐怕就要费一番周折了.但是有了chrome这个浏览器,我 ...

  9. js 递归下的循环

    的递归下的循环不能使用forEach  可以使用for代替 错误写法 // 获取完整名字 var getFullName = function(code, resultName) { if (code ...

  10. Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    http://blog.csdn.net/cjjky/article/details/6441104 在Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSeri ...