Poi 生成xls

项目需求:

  p2p项目中,需要一些数据报表一xls的格式,提供下载。并给主管签名。

方案:

------------------------

  poi 3.9

------------------------

第一步学习:

了解poi:

  

Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。

结构:

  • HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
  • XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
  • HWPF - 提供读写Microsoft Word DOC格式档案的功能。
  • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
  • HDGF - 提供读Microsoft Visio格式档案的功能。
  • HPBF - 提供读Microsoft Publisher格式档案的功能。
  • HSMF - 提供读Microsoft Outlook格式档案的功能。

我需要的就是hssf。

poi3.9这里我分享下

链接: http://pan.baidu.com/s/1EHymz 密码: f94c

第二步学习:

清单1.定义新的xls里面工作簿和一个sheet页



Workbook wb = new HSSFWorkbook();                                    //定义一个新的工作簿

Sheet sheet1= wb.createSheet("满标复审模板");                          //定义第一个sheet页

清单2.创建一个文件流,并输出一个xls

wb.write(fos); // Workbook 将流写进工作簿



FileOutputStream fos = new FileOutputStream("D://测试.xls");          //输出一个新的xls
wb.write(fos);
fos.close();

做了前两个,main里面运行就生成了一个xls

清单3.创建行,单元格-->并赋值  

Row row = sheet1.createRow(0);                                        //为第一个sheet页创建标题
Cell cell = row.createCell(column);                                   //为相应行创建一个单元格
cell.setCellValue("借款标满标确认单");

  并注意,这些写在清单1,2之间。

 

第三步学习:

  鄙人自己想了想,然后学习下,觉得

    1.字体font,单元style归一类

    2.赋值,合并单元格归一类

在一个sheet页里面,

    step1.创建内容

    /**创建 制单人--制单编号**/
        Row row1 = sheet1.createRow(1);
        setRowOfFourSecondTitle(wb, sheet, row1,1,"制单人:",
                "Li","制单编号:","20131115");    

    step2.进入setRowOfFourSecondTitle

/**
* 创建 制单人--制单编号
* @param workbook
* @param sheet
* @param row
* @param column
* @param valString1 //列1的值
* @param valString2 //列2的值
* @param changeString1 //列3的值--填入值
* @param changeString2 //列4的值--填入值
*/

private static void setRowOfFourSecondTitle(Workbook workbook,Sheet sheet,Row row,
            int column,String valString1,String changeString1 ,String valString2,String changeString2) {
        row.setHeightInPoints(40);                                               //行高度
        sheet.setDefaultColumnWidth(30);                                        //设置列的宽度

        Cell cel0 = row.createCell(0);                                            //为相应行创建列1 单元格
        cel0.setCellValue(valString1);
        cel0.setCellStyle(getCellStyleOfOne(workbook));

        Cell cell2 = row.createCell(2);                                            //为相应行创建列3单元格
        cell2.setCellValue(valString2);
        cell2.setCellStyle(getCellStyleOfOne(workbook));

        Cell cell1 = row.createCell(1);                                            //为相应行创建列2单元格
        cell1.setCellValue(changeString1);
        cell1.setCellStyle(getCellStyleOfTwo(workbook));

        Cell cell3 = row.createCell(3);
        cell3.setCellValue(changeString2);
        cell3.setCellStyle(getCellStyleOfTwo(workbook));
    }

      step3.由于单元格的里面样式不同

--------------------------------------------

    getCellStyleOfTwo 其一

getCellStyleOfOne 其二
------------------------------------------

举其中的一个例子:

其一

/**
* 制单人--制单编号 对应样式
* @param workbook
* @return 制单人--制单编号 对应样式
*/

private static CellStyle getCellStyleOfOne(Workbook workbook) {
        CellStyle style1 = workbook.createCellStyle();                            // 样式对象
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);                // 垂直
        style1.setAlignment(HSSFCellStyle.ALIGN_RIGHT);                            // 水平   

        Font font1=workbook.createFont();
        font1.setColor(HSSFColor.BLACK.index);                                    //字体颜色
        font1.setFontHeightInPoints((short)10);                                    //字体大小
        font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);                            //字体增粗

        style1.setFont(font1);
        return style1;
    }

第四步学习:

www.baidu.com 文档学习。

总结:

  poi操作xls挺简单的,应用那块也有推荐。可以找找视频学习。主要是一些接口的熟悉。

时间: 2024-09-16 04:29:12

Poi 生成xls的相关文章

【POI】使用POI 创建生成XLS,打开xls文件提示【此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数。】

   使用POI 创建生成XLS,打开xls文件提示[此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数.]       原因: 是因为在POI处理xls的过程中,太多次调用了: HSSFFont font = hssfWorkbook.createFont(); 解决方法: 将font创建为全局变量,在需要使用的地方再调用进行单独的设置.  

poi处理excel-小白求助:poi生成excel速度过慢问题,该怎么优化

问题描述 小白求助:poi生成excel速度过慢问题,该怎么优化 package poiMain; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.S

poi生成的excel文件打开以后大小改变

问题描述 poi生成的excel文件打开以后大小改变 poi生成的excel文件打开以后大小改变了,关键是,如果不打开excel的话,用SAX去读已经生成的这个excel,得到的数据是不准确的,打开以后才能读准,有什么好的解决办法么 解决方案 你生成的是xls还是xlsx,SAX读取有没有问题.如果不兼容,建议用csv,它比excel兼容性更好. 解决方案二: xlsx是2007年以后opendocument标准的一个实现,微软的实现用于新的Office.这个标准国内也参与,结果尽管

通过文件结构直接生成xls文件

以下代码演示了直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了. 1.using System;2.using System.Collections.Generic;3.using System.Text;4.namespace ConsoleApplication165.{6. class Program7. {8. static void Main( string [] args)9. {10. //不通过OLE生成excel文件的方法11. Exce

通过excel可识别的xml结构直接生成xls文件

上一片文章演示了如何根据简单的excel文件结构直接生成xls文件,如果涉及到合并,公式之类的复 杂操作,可以使用xml结构来直接构造xls文件,比如生成如下所示文件 上图中D列和E列为 公式,第4行为公式合计,7.8行为合并过的单元格.完整代码如下: using System;using System.Collections.Generic;using System.Text;using System.Xml;namespace ConsoleApplication17{ class Prog

寻找个 用java poi 将xls转换成xlsx原有xls样式丢失问题的解决办法

问题描述 寻找个 用java poi 将xls转换成xlsx原有xls样式丢失问题的解决办法 最近在用java poi将原有财务部门的xls文件批量转换成xlsx格式,但是很不幸,xls原有的样式(比如:字体大小,字体颜色,背景)全部丢失了. 试着将原有xls里的style读出来设置给新的xlsx,但是遇到错误. Code: xlsxCell.setCellStyle(xlsCell.getCellStyle()); Error: java.lang.ClassCastException: or

poi生成excel设置表格保护后,组合显示也被保护了,该怎么取消?

问题描述 poi生成excel设置表格保护后,组合显示也被保护了,该怎么取消? 今天小弟碰到一个问题,望懂的大神帮忙看看,感激不尽: 我用poi生成excel时先设置了一个表格保护(sheet.protectSheet("123")),然 后有在表中生成过组合(sheet.groupRow(i+4,h+2);)这样的话这个生成的组合就用不了了,该怎么给这个组合按钮取消保护呢? 解决方案 没人知道吗?自己顶下下下下下

使用poi生成word文档出错是怎么回事呢?各位大神请指教一下

问题描述 使用poi生成word文档出错是怎么回事呢?各位大神请指教一下 The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSS

poi生成word问题

问题描述 我从数据库读出数据,然后用poi生成word文档后,打开word需要选择字符集,怎么样能让word不出现选择字符集 解决方案 解决方案二:是不是你的字符集有问题啊?解决方案三:关注中....