1. package excel; 2.
3. import java.io.FileOutputStream; 4. import java.text.SimpleDateFormat; 5. import java.util.Date; 6.
7. import org.apache.poi.hssf.usermodel.HSSFWorkbook; 8. import org.apache.poi.ss.usermodel.Cell;
9. import org.apache.poi.ss.usermodel.CellStyle; 10.import org.apache.poi.ss.usermodel.DataFormat; 11.import org.apache.poi.ss.usermodel.Row; 12.import org.apache.poi.ss.usermodel.Sheet; 13.import org.apache.poi.ss.usermodel.Workbook; 14.import org.apache.poi.ss.util.CellRangeAddress; 15. 16.
17./*********************************************************************** 18. *
19. * poiCreate.java
20. * @copyright Copyright: 2009-2012 21. * @creator 周辉
22. * @create-time Mar 9, 2010 2:27:52 PM 23. * @revision $Id: *
24. ***********************************************************************/
25.public class poiCreate { 26.
27. /**
28. * @param args 29. */
30. public static void main(String[] args) throws Exception { 31. //创建一个EXCEL
32. Workbook wb = new HSSFWorkbook();
33. DataFormat format = wb.createDataFormat(); 34. CellStyle style; 35. //创建一个SHEET
36. Sheet sheet1 = wb.createSheet(\产品清单\
37. String[] title = {\编号\产品名称\产品价格\产品数量\生产日期\产地\是否出口\38. int i=0; 39. //创建一行
40. Row row = sheet1.createRow((short)0); 41. //填充标题
42. for (String s:title){
43. Cell cell = row.createCell(i); 44. cell.setCellValue(s); 45. i++; 46. }
47. Row row1 = sheet1.createRow((short)1); 48. //下面是填充数据
49. row1.createCell(0).setCellValue(20071001); 50. row1.createCell(1).setCellValue(\金鸽瓜子\51. //创建一个单元格子
52. Cell cell2=row1.createCell(2); 53. // 填充产品价格
54. cell2.setCellValue(2.45); 55. style = wb.createCellStyle();
56. style.setDataFormat(format.getFormat(\57. //设定样式
58. cell2.setCellStyle(style); 59. // 填充产品数量
60. row1.createCell(3).setCellValue(200); 61. /*
62. * 定义显示日期的公共格式 63. * 如:yyyy-MM-dd hh:mm 64. * */
65. SimpleDateFormat sdf = new SimpleDateFormat(\\
66. String newdate = sdf.format(new Date()); 67. // 填充出产日期
68. row1.createCell(4).setCellValue(newdate); 69. row1.createCell(5).setCellValue(\陕西西安\70. /*
71. * 显示布尔值 72. * */
73. row1.createCell(6).setCellValue(true); 74. /*
75. * 合并单元格 76. * 通过
writablesheet.mergeCells(int x,int y,int m,int n);来实现的 77. * 表示将first row, last row,first column,last column 78. * 79. * */
80. Row row2 = sheet1.createRow((short) 2); 81. Cell cell3 = row2.createCell((short) 0); 82. cell3.setCellValue(\合并了三个单元格\
83. sheet1.addMergedRegion(new CellRangeAddress(2,2,0,2));
84.
85. FileOutputStream fileOut = new FileOutputStream(\st.xls\
86. wb.write(fileOut); 87. fileOut.close(); 88. 89.
90. } 91. 92.}
上面代码2中方式生成 2张报表,涉及到基本生成报表中的几种单元格类型。 POI 用的JAR poi-3.6-20091214.jar jxl 用到的jar jxl-2.6.jar 2 种方式都相对比较好用,个人推荐使用POI (apache的项目) 相关参考资料可以去官方网站查看
http://poi.apache.org/spreadsheet/quick-guide.html
近期看了下POI,写了一些小例子,结合反射技术对EXCEL的导入到出进行了简单封装,主要实现功能如下:
(1)导入EXCEL文档到List
(2)导出List
其中第(3)个方法使用了相应的格式规范加反射,具体使用时只要配置好List中对象的取值方法名,可以实现很大程度上的复用
注:支持对象的深度导出,即List中存放对象的取值方法返回值是另一个对象的引用,最终需要的值在这个引用对象中
多余的话就不说了,上代码(Demo工程放到了文章后面的附件中): POI封装类(主类)MyPOI.java Java代码
1. package com.lightgjc1.poi; 2.
3. import java.io.File;
4. import java.io.FileInputStream; 5. import java.io.FileOutputStream; 6. import java.io.IOException;
7. import java.lang.reflect.Method; 8. import java.util.ArrayList; 9. import java.util.HashMap; 10.import java.util.List; 11.import java.util.Map; 12.
13.import org.apache.poi.hssf.usermodel.HSSFCell; 14.import org.apache.poi.hssf.usermodel.HSSFRow; 15.import org.apache.poi.hssf.usermodel.HSSFSheet; 16.import org.apache.poi.hssf.usermodel.HSSFWorkbook; 17.
18.public class MyPOI { 19. 20. /**
21. * 导入Excel文件
22. * 内容以List
24. * @param strKeys : Map的Key列表,Value为相应的sheet一行中各列的值 25. * @return 26. */
27. public static List
28. String[] strKey = strKeys.split(\
29. List
31. int i = 1; 32. try {
33. HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excelFile));
34. HSSFSheet sheet = workbook.getSheetAt(0); 35. while (true) {
36. HSSFRow row = sheet.getRow(i); 37. if (row == null) 38. break; 39.
40. Map
41. for(int keyIndex = 0; keyIndex < strKey.length; keyIndex++){
42. map.put(strKey[keyIndex], row.getCell(keyIndex).getStringCellValue()); 43. }
44. listMap.add(map); 45. 46. i++; 47. }
48. } catch (Exception e) { 49. e.printStackTrace(); 50.
51. System.out.println(\导入中断,错误位置:第\行数据!\52. } 53.
54. return listMap; 55. } 56. 57. /**
58. * 导出Excel文件
59. * 数据源的数据格式为List
61. * @param title : 新建Sheet的名称 62. * @param strTitle : Sheet各列的标题(第一行各列的名称) 63. * @param strBody : Sheet各列的取值方法名(各列的值在objClass中get方法名称)
64. * @param outputPath: Excel文档保存路径 65. */
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库jxl操作excel(4)在线全文阅读。
相关推荐: