- 浏览: 352440 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (176)
- struts2 (4)
- javascript (9)
- database (11)
- hibernate (11)
- java (36)
- CSS (1)
- wap (8)
- html (5)
- spring (3)
- 操作系统 (9)
- xml (0)
- eclipse/myeclipse (6)
- freemarker (2)
- jsp+servlet (4)
- fckeditor (1)
- Linux (12)
- tomcat (4)
- SNMP (2)
- Loadrunner (1)
- php (0)
- 版本控制 (1)
- android (3)
- pki (7)
- jquery (4)
- webservice (4)
- ipad (1)
- 开发工具 (1)
- jslt (1)
- 连接池 (6)
- javaApi (1)
- 学习笔记 (6)
- eclipse (2)
最新评论
-
宋建勇:
nice
keytool详解 -
1122334455aabb:
java int,byte、char之间的相互转化,更多内容参 ...
java中byte 与16进制字符相互转换 -
01jiangwei01:
CA[i >>> 18 & 0x3f ...
使用JAVA数字证书做数字签名认证 -
sjp524617477:
good
keytool详解 -
whlngn:
输出结果我只想取汉字,而不要后面的数字,应该如何实现,求回答
配置paoding analysis
Apache POI HSSF和XSSF读写EXCEL总结
HSSF是指2007年以前的,XSSF是指2007年版本以上的
这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴
还有好多没有没有写的,详细的请参考http://poi.apache.org/spreadsheet/quick-guide.html
还有LOG也比较好看
- public class SummaryHSSF {
- public static void main(String[] args) throws IOException {
- //创建Workbook对象(这一个对象代表着对应的一个Excel文件)
- //HSSFWorkbook表示以xls为后缀名的文件
- Workbook wb = new HSSFWorkbook();
- //获得CreationHelper对象,这个应该是一个帮助类
- CreationHelper helper = wb.getCreationHelper();
- //创建Sheet并给名字(表示Excel的一个Sheet)
- Sheet sheet1 = wb.createSheet("HSSF_Sheet_1");
- Sheet sheet2 = wb.createSheet("HSSF_Sheet_2");
- //Row表示一行Cell表示一列
- Row row = null;
- Cell cell = null;
- for(int i=0;i<60;i=i+2){
- //获得这个sheet的第i行
- row = sheet1.createRow(i);
- //设置行长度自动
- //row.setHeight((short)500);
- row.setHeightInPoints(20);
- //row.setZeroHeight(true);
- for(int j=0;j<25;j++){
- //设置每个sheet每一行的宽度,自动,根据需求自行确定
- sheet1.autoSizeColumn(j+1, true);
- //创建一个基本的样式
- CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);
- //获得这一行的每j列
- cell = row.createCell(j);
- if(j==0){
- //设置文字在单元格里面的位置
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- //先创建字体样式,并把这个样式加到单元格的字体里面
- cellStyle.setFont(createFonts(wb));
- //把这个样式加到单元格里面
- cell.setCellStyle(cellStyle);
- //给单元格设值
- cell.setCellValue(true);
- }else if(j==1){
- //设置文字在单元格里面的位置
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- //设置这个样式的格式(Format)
- cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,##0.0000");
- //先创建字体样式,并把这个样式加到单元格的字体里面
- cellStyle.setFont(createFonts(wb));
- //把这个样式加到单元格里面
- cell.setCellStyle(cellStyle);
- //给单元格设值
- cell.setCellValue(new Double(2008.2008));
- }else if(j==2){
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- cellStyle.setFont(createFonts(wb));
- cell.setCellStyle(cellStyle);
- cell.setCellValue(helper.createRichTextString("RichString"+i+j));
- }else if(j==3){
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "MM-yyyy-dd");
- cell.setCellStyle(cellStyle);
- cell.setCellValue(new Date());
- }else if(j==24){
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- cellStyle.setFont(createFonts(wb));
- //设置公式
- cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")");
- }else{
- cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
- cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);
- cell.setCellStyle(cellStyle);
- cell.setCellValue(1);
- }
- }
- }
- //输出
- OutputStream os = new FileOutputStream(new File("c://SummaryHSSF.xls"));
- wb.write(os);
- os.close();
- }
- /**
- * 边框
- * @param wb
- * @return
- */
- public static CellStyle createStyleCell(Workbook wb){
- CellStyle cellStyle = wb.createCellStyle();
- //设置一个单元格边框颜色
- cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
- cellStyle.setBorderTop(CellStyle.BORDER_THIN);
- cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
- cellStyle.setBorderRight(CellStyle.BORDER_THIN);
- //设置一个单元格边框颜色
- cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
- cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
- cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
- return cellStyle;
- }
- /**
- * 设置文字在单元格里面的位置
- * CellStyle.ALIGN_CENTER
- * CellStyle.VERTICAL_CENTER
- * @param cellStyle
- * @param halign
- * @param valign
- * @return
- */
- public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign){
- //设置上下
- cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
- //设置左右
- cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- return cellStyle;
- }
- /**
- * 格式化单元格
- * 如#,##0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找
- * @param cellStyle
- * @param fmt
- * @return
- */
- public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt){
- //还可以用其它方法创建format
- cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt));
- return cellStyle;
- }
- /**
- * 前景和背景填充的着色
- * @param cellStyle
- * @param bg IndexedColors.ORANGE.getIndex();
- * @param fg IndexedColors.ORANGE.getIndex();
- * @param fp CellStyle.SOLID_FOREGROUND
- * @return
- */
- public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp){
- //cellStyle.setFillBackgroundColor(bg);
- cellStyle.setFillForegroundColor(fg);
- cellStyle.setFillPattern(fp);
- return cellStyle;
- }
- /**
- * 设置字体
- * @param wb
- * @return
- */
- public static Font createFonts(Workbook wb){
- //创建Font对象
- Font font = wb.createFont();
- //设置字体
- font.setFontName("黑体");
- //着色
- font.setColor(HSSFColor.BLUE.index);
- //斜体
- font.setItalic(true);
- //字体大小
- font.setFontHeight((short)300);
- return font;
- }
- }
public class SummaryHSSF { public static void main(String[] args) throws IOException { //创建Workbook对象(这一个对象代表着对应的一个Excel文件) //HSSFWorkbook表示以xls为后缀名的文件 Workbook wb = new HSSFWorkbook(); //获得CreationHelper对象,这个应该是一个帮助类 CreationHelper helper = wb.getCreationHelper(); //创建Sheet并给名字(表示Excel的一个Sheet) Sheet sheet1 = wb.createSheet("HSSF_Sheet_1"); Sheet sheet2 = wb.createSheet("HSSF_Sheet_2"); //Row表示一行Cell表示一列 Row row = null; Cell cell = null; for(int i=0;i<60;i=i+2){ //获得这个sheet的第i行 row = sheet1.createRow(i); //设置行长度自动 //row.setHeight((short)500); row.setHeightInPoints(20); //row.setZeroHeight(true); for(int j=0;j<25;j++){ //设置每个sheet每一行的宽度,自动,根据需求自行确定 sheet1.autoSizeColumn(j+1, true); //创建一个基本的样式 CellStyle cellStyle = SummaryHSSF.createStyleCell(wb); //获得这一行的每j列 cell = row.createCell(j); if(j==0){ //设置文字在单元格里面的位置 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); //先创建字体样式,并把这个样式加到单元格的字体里面 cellStyle.setFont(createFonts(wb)); //把这个样式加到单元格里面 cell.setCellStyle(cellStyle); //给单元格设值 cell.setCellValue(true); }else if(j==1){ //设置文字在单元格里面的位置 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); //设置这个样式的格式(Format) cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,##0.0000"); //先创建字体样式,并把这个样式加到单元格的字体里面 cellStyle.setFont(createFonts(wb)); //把这个样式加到单元格里面 cell.setCellStyle(cellStyle); //给单元格设值 cell.setCellValue(new Double(2008.2008)); }else if(j==2){ cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); cellStyle.setFont(createFonts(wb)); cell.setCellStyle(cellStyle); cell.setCellValue(helper.createRichTextString("RichString"+i+j)); }else if(j==3){ cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "MM-yyyy-dd"); cell.setCellStyle(cellStyle); cell.setCellValue(new Date()); }else if(j==24){ cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); cellStyle.setFont(createFonts(wb)); //设置公式 cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")"); }else{ cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND); cell.setCellStyle(cellStyle); cell.setCellValue(1); } } } //输出 OutputStream os = new FileOutputStream(new File("c://SummaryHSSF.xls")); wb.write(os); os.close(); } /** * 边框 * @param wb * @return */ public static CellStyle createStyleCell(Workbook wb){ CellStyle cellStyle = wb.createCellStyle(); //设置一个单元格边框颜色 cellStyle.setBorderBottom(CellStyle.BORDER_THIN); cellStyle.setBorderTop(CellStyle.BORDER_THIN); cellStyle.setBorderLeft(CellStyle.BORDER_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); //设置一个单元格边框颜色 cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex()); cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex()); cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex()); return cellStyle; } /** * 设置文字在单元格里面的位置 * CellStyle.ALIGN_CENTER * CellStyle.VERTICAL_CENTER * @param cellStyle * @param halign * @param valign * @return */ public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign){ //设置上下 cellStyle.setAlignment(CellStyle.ALIGN_CENTER); //设置左右 cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); return cellStyle; } /** * 格式化单元格 * 如#,##0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找 * @param cellStyle * @param fmt * @return */ public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt){ //还可以用其它方法创建format cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt)); return cellStyle; } /** * 前景和背景填充的着色 * @param cellStyle * @param bg IndexedColors.ORANGE.getIndex(); * @param fg IndexedColors.ORANGE.getIndex(); * @param fp CellStyle.SOLID_FOREGROUND * @return */ public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp){ //cellStyle.setFillBackgroundColor(bg); cellStyle.setFillForegroundColor(fg); cellStyle.setFillPattern(fp); return cellStyle; } /** * 设置字体 * @param wb * @return */ public static Font createFonts(Workbook wb){ //创建Font对象 Font font = wb.createFont(); //设置字体 font.setFontName("黑体"); //着色 font.setColor(HSSFColor.BLUE.index); //斜体 font.setItalic(true); //字体大小 font.setFontHeight((short)300); return font; } }
读取Excel文件
- public class ReadExcel {
- public static void main(String[] args) throws Exception {
- InputStream is = new FileInputStream(new File("c://SummaryHSSF.xls"));
- //根据输入流创建Workbook对象
- Workbook wb = WorkbookFactory.create(is);
- //get到Sheet对象
- Sheet sheet = wb.getSheetAt(0);
- //这个必须用接口
- for(Row row : sheet){
- for(Cell cell : row){
- //cell.getCellType是获得cell里面保存的值的type
- //如Cell.CELL_TYPE_STRING
- switch(cell.getCellType()){
- case Cell.CELL_TYPE_BOOLEAN:
- //得到Boolean对象的方法
- System.out.print(cell.getBooleanCellValue()+" ");
- break;
- case Cell.CELL_TYPE_NUMERIC:
- //先看是否是日期格式
- if(DateUtil.isCellDateFormatted(cell)){
- //读取日期格式
- System.out.print(cell.getDateCellValue()+" ");
- }else{
- //读取数字
- System.out.print(cell.getNumericCellValue()+" ");
- }
- break;
- case Cell.CELL_TYPE_FORMULA:
- //读取公式
- System.out.print(cell.getCellFormula()+" ");
- break;
- case Cell.CELL_TYPE_STRING:
- //读取String
- System.out.print(cell.getRichStringCellValue().toString()+" ");
- break;
- }
- }
- System.out.println("");
- }
- }
- }
public class ReadExcel { public static void main(String[] args) throws Exception { InputStream is = new FileInputStream(new File("c://SummaryHSSF.xls")); //根据输入流创建Workbook对象 Workbook wb = WorkbookFactory.create(is); //get到Sheet对象 Sheet sheet = wb.getSheetAt(0); //这个必须用接口 for(Row row : sheet){ for(Cell cell : row){ //cell.getCellType是获得cell里面保存的值的type //如Cell.CELL_TYPE_STRING switch(cell.getCellType()){ case Cell.CELL_TYPE_BOOLEAN: //得到Boolean对象的方法 System.out.print(cell.getBooleanCellValue()+" "); break; case Cell.CELL_TYPE_NUMERIC: //先看是否是日期格式 if(DateUtil.isCellDateFormatted(cell)){ //读取日期格式 System.out.print(cell.getDateCellValue()+" "); }else{ //读取数字 System.out.print(cell.getNumericCellValue()+" "); } break; case Cell.CELL_TYPE_FORMULA: //读取公式 System.out.print(cell.getCellFormula()+" "); break; case Cell.CELL_TYPE_STRING: //读取String System.out.print(cell.getRichStringCellValue().toString()+" "); break; } } System.out.println(""); } } }
还有一种传统的读法
- Sheet sheet = wb.getSheetAt(0);
- for (Iterator rit = sheet.rowIterator(); rit.hasNext(); ) {
- Row row = (Row)rit.next();
- for (Iterator cit = row.cellIterator(); cit.hasNext(); ) {
- Cell cell = (Cell)cit.next();
- // Do something here
- }
- }
- HSSFSheet sheet = wb.getSheetAt(0);
- for (Iterator<HSSFRow> rit = (Iterator<HSSFRow>)sheet.rowIterator(); rit.hasNext(); ) {
- HSSFRow row = rit.next();
- for (Iterator<HSSFCell> cit = (Iterator<HSSFCell>)row.cellIterator(); cit.hasNext(); ) {
- HSSFCell cell = cit.next();
- // Do something here
- }
- }
发表评论
-
常用排序算法小记
2012-06-29 07:59 919转自:http://easense2009.iteye.com ... -
抽象类与接口
2012-06-07 13:47 774java中只可以继承一个类却可以继承多个接口。一个抽象 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-18 09:36 626最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
Runtime.getRuntime().exec(...)使用方法
2011-01-25 11:06 3209如果想要了解更多的信息,参阅代码里面给的链接 下面是这个正确的 ... -
使用poi一步一步建立报表 (excel操作)
2011-01-08 20:21 1575... -
JNLP介绍
2010-12-05 15:04 1855原文地址:http://blog.csdn.net/yq7 ... -
利用反射私有属性/方法进行设置/调用
2010-12-03 08:35 1114因一时兴起看了一些有关 Java 反射( Reflection ... -
如何编写高效率java代码
2010-09-08 12:38 1468如何编写高效率Java 规则1 用时间频度来确定异常情况 ... -
深入理解Java加载类的机制
2010-09-07 22:32 1126这里从三个方面讲述java classloader ... -
Java 动态加载类
2010-09-07 22:29 2260Java 动态加载类 收 ... -
简单例子演示如何进行类的热加载(Hot Deployment)
2010-09-07 22:13 1674简单例子演示如何进行 ... -
ResourceBundle与Properties两个类的区别
2010-08-26 14:09 1602这两个类都是读取properties格式的文件的,而Prope ... -
log4j多文件配置
2010-08-26 10:07 1495log4j.rootCategory=INFO, CONSOL ... -
java获取properties 配置文件
2010-08-26 09:21 1738根据网上的例子总结了一下。 其中cache.p ... -
Class.forName与new 得区别
2010-08-13 15:45 1055Class.forName(xxx.xx.xx) 返回一个类 ... -
HttpURLConnection简单用法
2010-08-04 15:00 1575HttpURLConnection为javaAPI提 ... -
java中byte 与16进制字符相互转换
2010-07-27 13:53 7396Java中byte用二进制表示占用8位,而我们知道16进制的每 ... -
使用Axis在Tomcat下发布Webservice操作指南
2010-06-21 12:58 2456最近在工作过程中总是需要向其它项目组提供Webservice ... -
jdk安装
2010-06-12 21:41 14271.1 获取 JDK Java 的 ... -
System.load 和 System.loadLibrary
2010-06-12 08:37 1416System.load 和 System.loadLibrar ...
相关推荐
自己花了几天时间写的基于Apache POI的Java 读取excel文件,功能还是比较齐全
Apache POI HSSF和XSSF读写EXCEL总结
解决POI读取EXCEL时报org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException异常
Apache POI库是一个开源的Java库,可以帮助开发人员处理Microsoft Office格式的文档,例如Word文档、Excel电子表格和PowerPoint演示文稿等。以下是Apache POI库的详细介绍: 支持多种Office格式:Apache POI库支持...
HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的...
HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能...
POI工程结构 HSSF提供读写Excel XLS格式档案的功能 XSSF提供读写Excel OOXML XLSX格式档案的功能
Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: •HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 •XSSF - 提供读写Microsoft Excel OOXML XLSX...
Apache POI 文件 ... HSSF –是POI项目对Excel '97(-2007)文件格式的纯Java实现。 例如 , 。 XSSF –是POI项目对Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。 例如 , 。 SXSSF (自3.8-beta
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取...
Apache Jakarta POI项目提供了用于访问和生成Excel文档的组件。POI HSSF API用于生成Excel Workbook以及将Excel电子表格添加到workbook。Excel电子表格由行和单元格组成。电子表格的页面布局和字体也使用POI HSSF ...
Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: •HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 •XSSF - 提供读写Microsoft Excel OOXML XLSX...
HSSF - 提供读写Microsoft Excel格式档案(.xls)的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案(.xlsx)的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft ...
Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 包名称说明: HSSF提供读写Microsoft Excel XLS格式档案的功能。 XSSF提供读写Microsoft Excel OOXML ...
HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式...
Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,特别是Excel。它是Apache软件基金会的一个开源项目,提供了多种API来处理Office文档,包括Word、Excel、PowerPoint等。Apache POI的主要...
import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; ...
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 结构: HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel...
Apache的Jakata项目的POI子项目,目前比较成熟的是HSSF接口,处理MSExcel对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
HSSF:用于读取和写入.xls格式的MS-Excel文件。 XSSF(XML SpreadSheet格式):用于MS-Excel的.xlsx文件格式。 HPSF:用于提取MS-Office文件的属性集。 HWPF:用于读取和写入MS-Word的.doc扩展文件。 XWPF(XML字处理器格式...