java用org.apache.poi包操作excel

1.Jakarta POI 是apache的子项目,目标是处理ol2对象。它提供了一组Windows文档操作的Java API。

2.EXCEL 结构
HSSFWorkbook excell 文档对象介绍
HSSFSheet excell的表单
HSSFRow excell的行
HSSFCell excell的格子单元
HSSFFont excell字体
HSSFName 名称
HSSFDataFormat 日期格式
在poi1.7中才有以下2项:
HSSFHeader sheet头
HSSFFooter sheet尾
和这个样式
HSSFCellStyle cell样式
辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表

3.简单的用法

创建Excel

Java代码  

  1. import java.io.FileOutputStream;
  2. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  3. public class NewWorkbook {
  4. public static String outputFile = "C:/test1.xls";
  5. public static void main(String[] args) {
  6. try {
  7. HSSFWorkbook wb = new HSSFWorkbook();//create new HSSFWorkbook object
  8. FileOutputStream fileOut = new FileOutputStream(outputFile);
  9. wb.write(fileOut);//Workbook-->test1.xls
  10. fileOut.flush();
  11. fileOut.close();
  12. System.out.println("The file has been created.");
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }

简单的Excel写操作

Java代码  

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.util.Date;
  4. import org.apache.poi.hssf.usermodel.HSSFCell;
  5. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  6. import org.apache.poi.hssf.usermodel.HSSFDataFormat;
  7. import org.apache.poi.hssf.usermodel.HSSFRow;
  8. import org.apache.poi.hssf.usermodel.HSSFSheet;
  9. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  10. public class CreateCells {
  11. public static String fileTobewrite = "C:/test1.xls";
  12. public static void main(String[] args) throws IOException {
  13. try {
  14. HSSFWorkbook wb = new HSSFWorkbook();//create new HSSFWorkbook object
  15. HSSFSheet sheet = wb.createSheet("new sheet");// create new sheet object
  16. //Create a row and put some cells in it. Rows are 0.
  17. HSSFRow row = sheet.createRow(0);//create new row
  18. //Create a cell and put a value in it.
  19. HSSFCell cell = row.createCell(0);//create new cell
  20. cell.setCellValue(1);//setting the cell value
  21. //do it on one line
  22. row.createCell(1).setCellValue(1.2);
  23. row.createCell(2).setCellValue("test");
  24. row.createCell(3).setCellValue(true);
  25. HSSFCellStyle cellStyle = wb.createCellStyle();//new cell style
  26. cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));// set date style
  27. HSSFCell dcell = row.createCell(4);//create new cell
  28. dcell.setCellValue(new Date());
  29. dcell.setCellStyle(cellStyle);
  30. HSSFCell csCell = row.createCell(5);
  31. csCell.setCellType(HSSFCell.ENCODING_UTF_16);
  32. csCell.setCellValue("中文测试_Chinese Words Test");//set cell code
  33. row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR);
  34. //write the output to a file
  35. FileOutputStream fileOut = new FileOutputStream(fileTobewrite);
  36. wb.write(fileOut);
  37. fileOut.flush();
  38. fileOut.close();
  39. System.out.println("The cells have been added.");
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }

简单的Excel读操作

Java代码  

  1. import java.io.FileInputStream;
  2. import java.text.DateFormat;
  3. import java.text.SimpleDateFormat;
  4. import org.apache.poi.hssf.usermodel.HSSFCell;
  5. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  6. import org.apache.poi.hssf.usermodel.HSSFRow;
  7. import org.apache.poi.hssf.usermodel.HSSFSheet;
  8. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  9. public class ReadExcel {
  10. public static String fileTobeRead = "C:/test1.xls";
  11. public static String getCellValue(HSSFCell cell){
  12. String value = null;
  13. if (cell != null)
  14. {
  15. //get the type of the cell
  16. int cellType = cell.getCellType();
  17. switch (cellType)
  18. {
  19. //""
  20. case HSSFCell.CELL_TYPE_BLANK :
  21. value = "";
  22. break;
  23. //Boolean
  24. case HSSFCell.CELL_TYPE_BOOLEAN :
  25. value = cell.getBooleanCellValue() ? "TRUE" : "FALSE";
  26. break;
  27. //Error
  28. case HSSFCell.CELL_TYPE_ERROR :
  29. value = "ERR-" + cell.getErrorCellValue();
  30. break;
  31. //Formula
  32. case HSSFCell.CELL_TYPE_FORMULA :
  33. value = cell.getCellFormula();
  34. break;
  35. //Numeric
  36. case HSSFCell.CELL_TYPE_NUMERIC :
  37. //Date
  38. if (HSSFDateUtil.isCellDateFormatted(cell))
  39. {
  40. //change to "yyyy-MM-dd"
  41. DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  42. value = sdf.format(cell.getDateCellValue());
  43. }
  44. //Number
  45. else
  46. {
  47. value = cell.getNumericCellValue() + "";
  48. }
  49. break;
  50. //String
  51. case HSSFCell.CELL_TYPE_STRING :
  52. value = cell.getStringCellValue();
  53. break;
  54. //Other
  55. default :
  56. value = "Unknown Cell Type:"  + cell.getCellType();
  57. }
  58. }
  59. return value;
  60. }
  61. public static void main(String[] args) {
  62. try {
  63. HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(fileTobeRead));
  64. HSSFSheet sheet = wb.getSheet("new sheet");
  65. //getSheetAt(int index) first sheet index is 0.
  66. int rowNum = sheet.getPhysicalNumberOfRows();
  67. int cellNum;
  68. System.out.println("Row number is " + rowNum);
  69. HSSFRow row;
  70. HSSFCell cell;
  71. for(int i=0;i<sheet.getPhysicalNumberOfRows();i++){
  72. row = sheet.getRow(i);
  73. cellNum = row.getPhysicalNumberOfCells();
  74. System.out.println("cell number is " + cellNum);
  75. for(int j = 0; j < cellNum; j++){
  76. cell=row.getCell(j);
  77. System.out.println("row " + i + "cell "+ j + ":" + getCellValue(cell));
  78. }
  79. }
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }

4.设置单元格格式

Java代码  

    1. //set font style red and bold
    2. HSSFFont font = wb.createFont();
    3. font.setColor(HSSFFont.COLOR_RED);
    4. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    5. //create style
    6. HSSFCellStyle cellStyle1 = wb.createCellStyle();
    7. cellStyle1.setFont(font);
    8. //use this style
    9. HSSFCell cell1 = row.createCell(1);
    10. cell.setCellStyle(cellStyle1);
    11. cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    12. cell.setCellValue("Title");
时间: 2024-10-26 14:48:36

java用org.apache.poi包操作excel的相关文章

Apache POI组件操作Excel,制作报表(一)

Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少.那么本文就结合POI来介绍一下操作Excel的方法.    Office 2007的文件结构完全不同于2003,所以对于两个版本的Office组件,POI有不同的处理API,分开使用即可.首先来说几个Excel的基本概念.对于一个Excel文件,这称为一个工

Java开发中使用POI库操作Excel

首先,我们要重点说明一下Excel的两中不同的格式,这个直接影响到我们在使用POI操作Excel的方式.一定要先明确你要操作的Excel所使用的版本,切记! 1,Excel的两种格式区别 a),*.xls文件是使用Microsoft Excel 2003或之前版本保存的电子表格,使用的存储格式为BIFF (Binary Interchange File Format),一种特殊的二进制格式文件. b)*.xlsx文件是使用Microsoft Office 2007 或后续版本保存的电子表格,使用

Apache POI组件操作Excel,制作报表(二)

现在来看看Excel的基本设置问题,以2007为例,先从工作簿来说,设置列宽,因为生成表格列应该固定,而行是遍历生成的,所以可以在工作簿级别来设置列宽,那么可以如下来进行.    首先是创建工作簿和工作表了: 1 // 创建Excel2007工作簿对象 2 XSSFWorkbook workbook2007 = new XSSFWorkbook(); 3 // 创建工作表对象并命名 4 XSSFSheet sheet = workbook2007.createSheet("学生信息统计表&quo

java通过poi包导入Excel

使用Apache POI包导入Excel时是需要根据行和列取到对应的值,因此取值时需要知道该列所对应的值应存放到对象的那个字段中去,表格出现变动就会变的比较麻烦,因此此处使用自定义注解的方式,在对象中标明该属性所对应的表头,从程序中遍历表头找到与之对应的单元格,方便数据的导入. 所需的jar包:(用了一下工具类,因此多导入了两个包) <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&

java利用poi包 为excel生成超链接

转载自:http://www.blogjava.net/leekiang/archive/2008/10/21/235794.html 1,一个需求, 要求报表生成的Excel表格支持超链接.例如点击Excel内的公司名, 自动打开浏览器并连到该公司的网站上去.在Excel里面选中所需的单元格, 右键弹出属性, 选超链接就能输入相应的地址了,既然Excel支持超链接.那就没有什么借口说不能实现了.:). 翻了翻POI的文档, 很容易就找到了解决方案.在POI中让单元格实现超链接功能, 可以用Hy

Java使用poi包读取Excel文档

项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <gr

java使用org.apache.poi读取与保存EXCEL文件

---恢复内容开始--- 一.读EXCEL文件 1 package com.ruijie.wis.cloud.utils; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.text.DecimalFormat; 8 import java.util

Apache POI - 记导出Excel所遇到的坑

Apache POI是个用Java编写的免费开源的,用来操作Microsoft Office格式的文档.实际工作中,经常需要把数据导入到Excel表中.这个目前来说,应该是比较好用的.以前用过NPOI,是其的.Net版本实现,原理差不太多.这篇文章主要说我遇到的问题,并记录一下,好了,上代码: public class HelloWorld{ private String name; private int age; public String getName() { return name;

Java之基于Apache jar包的FTPClient上传

首先,准备工作: http://pan.baidu.com/s/1dD1Utwt 从以上链接下载Apache的jar包,并将其复制到工程的WEB-INF下的lib包里,在此,准备工作就已经完成了. 具体java代码实现 1 FTPClient ftpClient = new FTPClient(); 2 try { 3 4 5 ftpClient.connect("ftp服务器IP"); //ftp服务器的用户名及密码,此处匿名用户,密码为空 6 boolean b = ftpClie