标签: xssf

加载XSSFWorkbook类的Apache POI错误

我正在尝试编写一个与Excel文档一起使用的程序,但HSSF格式对于我的要求来说太小了.我正在尝试迁移到XSSF,但是在尝试使用它时我一直都会遇到错误.

我设法通过将xmlbeans-2.3.0.jar和dom4j-1.6.jar添加到我的程序来解决前两个问题,但现在出现了这个错误,似乎没有通过添加Apache commons jar来解决Apache网站.

错误如下:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
    at hot.memes.ExcelCreator.main(ExcelCreator.java:66)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

java apache apache-poi xssf

43
推荐指数
5
解决办法
9万
查看次数

如何使用Apache POI加载大型xlsx文件?

我有一个大的.xlsx文件(141 MB,包含293413行,每行62列)我需要在其中执行一些操作.

我在加载此文件(OutOfMemoryError)时遇到问题,因为POI在XSSF(xlsx)工作簿上占用大量内存.

这个问题类似,提出的解决方案是增加VM的分配/最大内存.

它似乎适用于那种文件大小(9MB),但对我来说,即使分配所有可用的系统内存,它也只是不起作用.(嗯,考虑到文件大于15倍,这并不奇怪)

我想知道是否有任何方法以不占用所有内存的方式加载工作簿,但是,没有基于(进入)XSSF的底层XML进行处理.(换句话说,维护清教徒POI解决方案)

如果没有强硬的话,欢迎你说("没有."),并指出了解决"XML"问题的方法.

java memory out-of-memory apache-poi xssf

41
推荐指数
5
解决办法
8万
查看次数

处理大型xlsx文件

我需要自动适应大(30k +行)xlsx文件中的所有行.

以下代码通过apache poi适用于小文件,但适用于大文件OutOfMemoryError:

Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);

for (Row row : sheet) {
    row.setHeight((short) -1);
}

workbook.write(outputStream);
Run Code Online (Sandbox Code Playgroud)

更新:不幸的是,增加堆大小不是一个选项 - OutOfMemoryError出现在-Xmx1024m和30k行不是一个上限.

java out-of-memory xlsx apache-poi xssf

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

解决XSSFWorkbook的问题 - Java - POI .jar

我正在尝试升级Java应用程序以处理.xlsx,使用比现有POI库更新的POI库.我遇到类似于答案评论中提到的问题:Apache POI,同时使用XSSF和HSSF

我指的是新的ss.usermodel,但它一直告诉我它无法解析XSSF工作簿声明:

Workbook xlsImport = new XSSFWorkbook();
Run Code Online (Sandbox Code Playgroud)

我挖掘了他们的一些文档,发现XSSFWorkbook不是org.apache.poi.ss.usermodel的一部分.它是org.apache.poi.xssf.usermodel.XSSFWorkbook的一部分.但我没有poi.xssf导入.我指的是错的吗?我正在使用POI 3.7感谢您提供的任何帮助.

java excel apache-poi xssf

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

Excel使用Apache POI下拉列表

我需要使用Apache POI在excel文件中创建一个下拉列表.我能够做到这一点但是我无法将下拉列表中的第一项作为默认项目.

public class sd {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {

DataValidation dataValidation = null;
DataValidationConstraint constraint = null;
DataValidationHelper validationHelper = null;

 XSSFWorkbook wb = new XSSFWorkbook();
 XSSFSheet sheet1=(XSSFSheet) wb.createSheet("sheet1");


    validationHelper=new XSSFDataValidationHelper(sheet1);
    CellRangeAddressList addressList = new  CellRangeAddressList(0,5,0,0);
    constraint =validationHelper.createExplicitListConstraint(new String[]{"SELECT","10", "20", "30"});
    dataValidation = validationHelper.createValidation(constraint, addressList);
    dataValidation.setSuppressDropDownArrow(true);      
    sheet1.addValidationData(dataValidation);

    FileOutputStream fileOut = new FileOutputStream("c:\\temp\\vineet.xlsx");
    wb.write(fileOut);
    fileOut.close();
}

}
Run Code Online (Sandbox Code Playgroud)

excel apache-poi xssf

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

在Excel文件中读取Apache POI XSSF

我刚才有一个关于如何使用Apache的XSSF格式读取xlsx文件的快速问题.

现在我的代码看起来像这样:

InputStream fs = new FileInputStream(filename);   // (1)
XSSFWorkbook wb = new XSSFWorkbook(fs);           // (2)
XSSFSheet sheet = wb.getSheetAt(0);               // (3)
Run Code Online (Sandbox Code Playgroud)

......导入了所有相关的东西.我的问题是,当我点击运行时,它会陷入第(2)行,几乎是无限循环.filename只是一个字符串.

如果有人能给我一些关于如何解决这个问题的示例代码,我将非常感激.我现在想要的只是从xlsx文件中读取单个单元格; 我使用HSSF用于xls文件并且没有问题.

谢谢你的帮助,安德鲁

java apache excel apache-poi xssf

16
推荐指数
3
解决办法
8万
查看次数

Java POI提供的数据似乎在Office 2007+ XML中

我收到此错误:

org.apache.poi.poifs.filesystem.OfficeXmlFileException:提供的数据似乎在Office 2007+ XML中.您正在调用处理OLE2 Office文档的POI部分.您需要调用POI的不同部分来处理此数据(例如,XSSF而不是HSSF)

我读了扔谷歌,我发现我需要使用XSSF而不是HSSF,因为我的Excel文件是xlsx,但正如你在我的maven中看到的,我已经在使用xlsx了.我哪里出错了?

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.13-beta1</version>
    </dependency> 
Run Code Online (Sandbox Code Playgroud)

产生异常的代码是:

POIFSFileSystem fs;

            fs = new POIFSFileSystem(new FileInputStream(getFilePath()));
Run Code Online (Sandbox Code Playgroud)

我的新代码

public void getBColum() {
    try {
        OPCPackage fs;

        fs = new OPCPackage.open(new File(getFilePath()));

        XSSFWorkbook wb = new XSSFWorkbook(fs);
        XSSFSheet sheet = wb.getSheet("Master column name - Used Car");
        XSSFRow row;
        CellReference cr = new CellReference("A1");
        row = sheet.getRow(cr.getCol());
        System.out.println(row.getCell(3));
    } catch (FileNotFoundException e) {
        if (logger.isDebugEnabled()) {
            logger.debug("How can this error be possible? we should have already thrown an exception in …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi maven xssf

15
推荐指数
1
解决办法
6万
查看次数

如何获取最后一列索引读取excel文件?

xlsx使用Apache POI API 读取文件时如何获取最后一列的索引?

有一种getLastRowNum方法,但我找不到任何与列数相关的内容......


编辑:我正在处理XLSX文件

java apache-poi xssf

13
推荐指数
3
解决办法
4万
查看次数

使用Apache POI生成excel下拉列表时的限制

我正在尝试使用一些验证生成一个excel文件,我已经阅读了poi dev指南来实现它.在实现过程中,我得到了一个异常(String literals in formulas can't be bigger than 255 characters ASCII).POI将所有下拉选项连接成'0'消除字符串并检查其长度并给我异常.:(
我正在使用最新版本的POI 3.8 beta 5.
我的代码是:

try {
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");
    HSSFRow row = sheet.createRow((short) 0);
    //CellRangeAddressList from org.apache.poi.ss.util package
    CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
    DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(getCountries());
    DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
    dataValidation.setSuppressDropDownArrow(false);
    sheet.addValidationData(dataValidation);
    FileOutputStream fileOut = new FileOutputStream("c:\\test.xls");
    wb.write(fileOut);
    fileOut.close();
    } catch (IOException e) {
       e.printStackTrace();
  }
Run Code Online (Sandbox Code Playgroud)

之后我尝试使用此代码使用XSSFWorkBook:

XSSFWorkbook wb = …
Run Code Online (Sandbox Code Playgroud)

java apache-poi xssf

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

HSSFWorkbook vs XSSFWorkbook vs SXSSFWorkbook - Apache-poi

HSSFWorkbook vs XSSFWorkbook以及XSSFWorkbookSXSSFWorkbook的优缺点

java poi-hssf apache-poi xssf

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

标签 统计

apache-poi ×10

xssf ×10

java ×9

excel ×4

apache ×2

out-of-memory ×2

maven ×1

memory ×1

poi-hssf ×1

xlsx ×1