标签: apache-poi

使用POI将大型结果集写入Excel文件

这是一种内联w/将大型ResultSet写入文件但有问题的文件是Excel文件.

我正在使用Apache POI库编写一个Excel文件,其中包含从ResultSet对象检索到的大型数据集.数据范围从几千条记录到大约一百万条; 不确定这如何转换为Excel格式的文件系统字节.

以下是我编写的测试代码,用于检查编写如此大的结果集所花费的时间以及CPU和内存的性能影响.

protected void writeResultsetToExcelFile(ResultSet rs, int numSheets, String fileNameAndPath) throws Exception {

    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileNameAndPath));
    int numColumns = rs.getMetaData().getColumnCount();

    Workbook wb = ExcelFileUtil.createExcelWorkBook(true, numSheets);
    Row heading = wb.getSheetAt(0).createRow(1);

    ResultSetMetaData rsmd = rs.getMetaData();

    for(int x = 0; x < numColumns; x++) {
        Cell cell = heading.createCell(x+1);
        cell.setCellValue(rsmd.getColumnLabel(x+1));
    }

    int rowNumber = 2;
    int sheetNumber = 0;

    while(rs.next()) {

        if(rowNumber == 65001) {
            log("Sheet " + sheetNumber + "written; moving onto to sheet …
Run Code Online (Sandbox Code Playgroud)

java jdbc apache-poi

33
推荐指数
2
解决办法
11万
查看次数

Apache POI中行的自动大小高度

我正在使用Apache POI将值输入到电子表格中.这些值有换行符,我能够成功使用此代码:

CellStyle style = cell.getCellStyle()
style.setWrapText(true)
cell.setCellStyle(style)
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然文本正确包装,但行的高度并不总是足以显示内容.如何确保我的行总是正确的高度?

java excel apache-poi

33
推荐指数
4
解决办法
7万
查看次数

如何使用Apache POI创建简单的docx文件?

我正在寻找一个简单的示例代码或完整的教程如何docx使用Apache POI及其底层创建文件openxml4j.

我尝试下面的代码(有很多从内容的帮助,协助,感谢Eclipse的!),但代码不能正常工作.

String tmpPathname = aFilename + ".docx";
File tmpFile = new File(tmpPathname);

ZipPackage tmpPackage = (ZipPackage) OPCPackage.create(tmpPathname);
PackagePartName tmpFirstPartName = PackagingURIHelper.createPartName("/FirstPart");
PackagePart tmpFirstPart = tmpPackage.createPart(tmpFirstPartName, "ISO-8859-1");

XWPFDocument tmpDocument = new XWPFDocument(tmpPackage); //Exception
XWPFParagraph tmpParagraph = tmpDocument.createParagraph();
XWPFRun tmpRun = tmpParagraph.createRun();
tmpRun.setText("LALALALAALALAAAA");
tmpRun.setFontSize(18);
tmpPackage.save(tmpFile);
Run Code Online (Sandbox Code Playgroud)

抛出的异常如下:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:235)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:196)
    at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:94)
    at DocGenerator.makeDocxWithPoi(DocGenerator.java:64)
    at DocGenerator.main(DocGenerator.java:50)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决(非常简单)的要求吗?

java docx apache-poi

32
推荐指数
1
解决办法
3万
查看次数

使用Apache POI HSSF,如何一次刷新所有公式单元格?

我使用Apache POI填充Excel文件的单元格,文档中有很多公式单元格.但是,当我在Excel中打开文档时,它们的值不会刷新.

我的理解是我需要使用a FormulaEvaluator刷新公式单元格.但是,有没有办法一次更新所有公式单元格?它们中有很多,虽然制作详尽的清单并不是不可能的,但它肯定不是我非常愿意做的事情.

java apache-poi

32
推荐指数
2
解决办法
2万
查看次数

Excel单元格中的多行文本

我正在尝试将多行文本写入excel单元格.

cell.setCellValue("line1 \n line2");
Run Code Online (Sandbox Code Playgroud)

但是当我打开文档时,我只看到一行,直到我双击它进行编辑,然后它变成两行.为什么会这样?谢谢

java excel export-to-excel apache-poi

32
推荐指数
1
解决办法
3万
查看次数

使用POI HSSF API从excel单元格中读取日期值

我正在使用POI HSSF API进行Java中的excel操作.我在我的一个excel单元格中有一个日期值"8/1/2009",当我尝试使用HSSF API读取该值时,它会将单元格类型检测为Numeric并返回我的日期的"Double"值.请参阅以下示例代码:

cell = row.getCell(); // date in the cell '8/1/2009'
switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:
    cellValue = cell.getRichStringCellValue().getString();
    break;
case HSSFCell.CELL_TYPE_NUMERIC:
    cellValue = new Double(cell.getNumericCellValue()).toString();
    break;
default:
}
Run Code Online (Sandbox Code Playgroud)

Cell.getCellType()返回NUMERIC_TYPE,因此此代码将日期转换为double!:(

有没有办法在HSSF POI中读取日期!

java excel poi-hssf apache-poi

30
推荐指数
4
解决办法
8万
查看次数

使用Apache POI HSSF从Excel工作表中删除行

我正在使用Apache POi HSSF库将信息导入我的应用程序.问题是文件有一些额外/空行需要在解析之前先删除.

没有HSSFSheet.removeRow( int rowNum )方法.只有removeRow( HSSFRow row ).这个问题是无法删除空行.例如:

sheet.removeRow( sheet.getRow(rowNum) );
Run Code Online (Sandbox Code Playgroud)

在空行上给出NullPointerException,因为getRow()返回null.另外,正如我在论坛上看到的那样,removeRow()只删除单元格内容,但行仍然是空行.

有没有一种方法可以删除行(空或不)而不创建一个没有我要删除的行的全新工作表?

java apache excel row apache-poi

29
推荐指数
3
解决办法
6万
查看次数

无法设置填充颜色Apache POI Excel工作簿

我一遍又一遍地扫描这个论坛并尝试了这里提到的每一种方法,仍然无法让Apache POI更改以填充我的Excel文档的背景颜色.

这是我的代码:

errorOccured = true;
XSSFCellStyle cs = workbook.createCellStyle();
cs.setFillBackgroundColor(IndexedColors.RED.getIndex());
row.getCell(0).setCellStyle(cs);
Run Code Online (Sandbox Code Playgroud)

你知道为什么这不起作用吗?什么是row.getCell(0)充满红色(背景色)的正确方法?

谢谢!

java background colors fill apache-poi

28
推荐指数
1
解决办法
3万
查看次数

org.apache.poi.POIXMLException:org.apache.poi.openxml4j.exceptions.InvalidFormatException:

我正在使用以下jar文件:

dom4j-1.6.1.jar
poi-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
xmlbeans-2.3.0.jar
Run Code Online (Sandbox Code Playgroud)

码:

package ExcelTest;

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            FileInputStream file = new FileInputStream(new File("G:\\Selenium Jar Files\\TestData\\Data.xls"));

            //Create Workbook instance holding reference to .xlsx file
            XSSFWorkbook workbook = new XSSFWorkbook(file);

            //Get first/desired sheet from the workbook
            XSSFSheet sheet = workbook.getSheetAt(0);

            //Iterate through each rows one by one
            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext())
            { …
Run Code Online (Sandbox Code Playgroud)

java apache-poi

28
推荐指数
2
解决办法
10万
查看次数

Apache POI的基本Excel货币格式

我能够将单元格格式化为Dates,但我无法将单元格格式化为货币...任何人都有一个如何创建样式以使其工作的示例?我下面的代码显示了我正在创建的样式... styleDateFormat的工作方式类似于冠军,而styleCurrencyFormat对单元格没有影响.

private HSSFWorkbook wb;
private HSSFCellStyle styleDateFormat = null;
private HSSFCellStyle styleCurrencyFormat = null;
Run Code Online (Sandbox Code Playgroud)

......

public CouponicsReportBean(){
    wb = new HSSFWorkbook();
    InitializeFonts();

}

public void InitializeFonts()
{
    styleDateFormat = wb.createCellStyle();
    styleDateFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));


    styleCurrencyFormat = wb.createCellStyle();
    styleCurrencyFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("$#,##0.00"));

}
Run Code Online (Sandbox Code Playgroud)

java apache-poi

27
推荐指数
3
解决办法
5万
查看次数

标签 统计

apache-poi ×10

java ×10

excel ×4

apache ×1

background ×1

colors ×1

docx ×1

export-to-excel ×1

fill ×1

jdbc ×1

poi-hssf ×1

row ×1