Tag: xssf

无法在新的ApachePOI XSSFWorkbook中简单地创build主题

如果我通过构造函数XSSFWorkbook()创buildXSSFWorkbook,是否可以创build空主题? 我可以创build新的主题,但不完全。 我可以在文件content_types.xml和/xl/_rels/workbook.xml.rels中创build两个条目: XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); POIXMLDocumentPart docThemePart = xssfWorkbook.createRelationship(XSSFRelation.THEME, XSSFFactory.getInstance(), 1); 通常在ApachePOI中是不可能的,因为它会导致错误。 我不得不修改(!)ApachePOI ThemesTable类 – 我添加了构造函数: public ThemesTable() { super(); } 然后上面的函数也创build文件/xl/theme/theme1.xml,但是它是空的。 如何填写这个文件? 如果我得到主题 ThemesTable theme = (ThemesTable) docThemePart; 并改变它,内容不写到theme.xml。 如何填写这个文件? 我检查了Zip创build。 ZipPartMarshaller类中的方法marshall()从某些工作簿部分获取inputstream。 而对于主题inputstream是空的。 也许是这个问题? 当我尝试(用于testing)创build其他对象时: xssfWorkbook.createRelationship(XSSFRelation.CHART, XSSFFactory.getInstance()); 一切都很好。 现在做什么?

为什么我的代码跳过空白字段?

我使用Apache poi从excel文件中读取,但是当它涉及空单元格时,它会跳过单元格。 为什么这样? 我已经放了一个if else条件来捕捉它。 这是我的代码: while (cellIterator.hasNext()) { cell = (XSSFCell) cellIterator.next(); if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { if(DateUtil.isCellDateFormatted(cell)) {

Excel单元格格式 – XSSF工作簿

这是我的代码到目前为止,它从查询中获取数据,然后将其导出到Excel文档中: <cfscript> oArray = CreateObject("java", "java.util.Arrays"); workbook = CreateObject("java", "org.apache.poi.xssf.usermodel.XSSFWorkbook"); workbook.init(); myFont = workbook.createFont(); myFont.setBoldweight(myFont.BOLDWEIGHT_BOLD); boldStyle = workbook.createCellStyle(); boldStyle.setFont(myFont); </cfscript> <!— Set up the headings for the Excel worksheet —> <cfscript> thisSheet = workbook.createSheet(JavaCast("string", 'invoices due')); rows = {}; // we need to refer to these three rows later on rows[1] = thisSheet.createRow(0); rows[2] = […]

从另一个XSSFCellStyle(POI APACHE)创build新的或克隆的XSSFCellStyle

需求 我需要一个新的XSSFCellStyle因为我必须改变一些XSSFCellStyle 。 情况 我只有一个XSSFCellStyle – 我没有它所属的XSSFCell 。 因此,我也无法访问相关的XSSFSheet或XSSFWorkbook 。 我已经试过了 我没有XSSFWorkbook因此我无法调用workbook.createCellStyle() 。 XSSFCellStyle构造函数至less需要一个StylesTable ,我也没有(因为我找不到从旧的XSSFCellStyle获取它的XSSFCellStyle )。 cellStyle.cloneStyleFrom(XSSFCellStyle Source)并没有真正克隆样式(它或多或less只是一个具有相同指针的副本,所以如果我改变一个cellStyle上的“clone”cellStyle有相同的变化)。 题 我怎样才能得到一个新的XSSFCellStyle ? 问候,winklerrr

获取错误“您的InputStream既不是OLE2stream,也不是OOXMLstream”通过Apache POI创build文件时

我正在尝试检查我的excel文件是否已经存在。 如果它不存在,我想创build一个新的,如果它存在,我将删除它并创build一个新的。 我写了下面的程序,但我得到错误在线 – workbook = WorkbookFactory.create(instream); 错误是 – > java.lang.IllegalArgumentException:您的InputStream既不是OLE2stream,也不是在org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:89)在tryIng.main(tryIng的.java:84) 这是一个程序 – > try { String filePath= "C:/Users/pritik/Desktop/t1.xlsx"; File file = new File(filePath); filePath= file.getAbsolutePath(); xlFile = new File(filePath); if(xlFile.exists() && !xlFile.isDirectory()) xlFile.delete(); //delete if file already exists. xlFile.createNewFile(); inStream = new FileInputStream(xlFile); workbook = WorkbookFactory.create(inStream); // I get error at this line String […]

如何通过XSSF事件API评估一个Excel公式

我正在使用Apache POI的事件API来读取XLSX文件,即通过SAXparsing器读取XLSX表格的内容。 我想知道如何通过使用XSSF事件API来获取公式的计算值。 我知道这样做是通过使用FormulaEvaluator类。 但是由于formulaEvaluator需要一个Workbook类的实例,所以我不想使用这种方法。 (我正在阅读包含一百万行和100列的Excel文件,所以如果我创build该Excel的工作簿对象,我的应用程序服务器将耗尽内存,因此我正在使用事件API) 如何在事件parsing中执行评估,而无需Workbook实例?

xssf如何获取任何东西作为string

我尝试使用apache poi xssf将excel文件parsing为XML。 现在有一个单元格,不知道里面有什么,我只想从中得到一个string。 但是当我使用 cell.getStringCellValue() 它抛出一个exception,这是不是很令人惊讶,因为它是这样logging的。 所以我通过检查天气是一个数字或文本单元格来build立我的方式。 但如何处理公式单元格。 他们可能包含数字 = A2 + B2 什么给我总和(例如4)或对另一个文本的引用 = C2 什么可能引用像“汉斯”的文字。 我怎么能知道我的单元格是什么,以及如何从中得到一个string?

如何转置与POI SS / XSSF表?

我正在使用POI XSSF API,我想转置一个工作表。 我怎样才能做到这一点? 谢谢。

XSSFWorkbook需要花费很多时间来加载

我正在使用下面的代码: File file = new File("abc.xlsx"); InputStream st = new FileInputStream(file); XSSFWorkbook wb = new XSSFWorkbook(st); xlsx文件本身有25,000行,每行有500列的内容。 在debugging过程中,我看到第三行创build了一个XSSFWorkbook,需要大量的时间(1小时!)来完成这个语句。 有没有更好的方式来访问原始的xlsx文件的值? 谢谢Abhishek S

为什么Apache POI OPCPackage的close()方法不能保存/写入内容来打开可写文件?

使用下面的代码,不会保存对Excel电子表格所做的单元格值更改: OPCPackage pkg = OPCPackage.open(inputFile); XSSFWorkbook wb = new XSSFWorkbook(pkg); ModifyWorkbook(); pkg.close(); 以下是我写的解决方法,但我不明白为什么这是必要的。 OPCPackage pkg = OPCPackage.open(inputFile); XSSFWorkbook wb = new XSSFWorkbook(pkg); ModifyWorkbook(); File tmp = File.createTempFile("tempSpreadsheet", ".xlsx"); FileOutputStream newExcelFile = new FileOutputStream(tmp); wb.write(newExcelFile); newExcelFile.close(); tmp.deleteOnExit(); pkg.close(); 关于主题的javadoc和指南指出.close()方法应该保存并closures。 在closures之前,检查已修改的单元格的值,表明已作出更改,但单独使用pkg.close()方法不足以在closures时将这些更改写入文件。