Tag: xssf

Apache-POI在Excel中设置值,但是在我手动按下处理条中的enter之前,另一个单元格的公式无法使用该值

我写了一个程序,它将值写入xlsx文件。 乍一看它似乎应该像它应该的那样工作。 但是在我的xlsx文件中,我在另一个单元格中有一个公式,如果我手动输入值,它应该正常工作,但是如果我的程序设置完全相同的值,它就不会像它应该那样工作。 如果我在程序写入一个值后手动打开文件,并通过按下处理条中的回车按钮确认写入值,它就像它应该的那样工作。 没有抛出exception。 我的程序是在单元格N4和O4中写入。 这是我正在谈论的单元格的Excel公式: = + MAX(; MIN(O4 +(N4> O4); MAX(($ N $ 2> $ö$ 2); $ø$ 2)) – MAX(N4; $ N $ 2))+ MAX(; MIN(O4; MAX (($ N $ 2> $ O $ 2); $ O $ 2)) – MAX(; $ N $ 2)) (N4> O4)+ MAX(; MIN(O4 +(N4> O4); MIN(($ […]

java.lang.OutOfMemoryError:加载xlsx文件时超出了GC开销限制

我理解错误意味着什么,我的程序消耗了太多的内存,并且很长一段时间它没有恢复。 当发生内存问题时,我的程序只读取6,2Mb xlsx文件。 当我尝试监视程序时,内存消耗很快达到1,2Gb,然后崩溃。 读取6,2Mb文件时如何达到1,2Gb? 有没有办法以块的forms打开文件? 这样它就不必加载到内存中了? 或任何其他解决方案? 正是这部分导致了它。 但既然它是一个图书馆,难道不应该以某种方式处理它吗? 它只有20万行,只有3列。 对于未来,我需要它与约。 1百万条记录和更多列… 码: Workbook myWorkBook; Sheet mySheet; if (filePath.contains(“.xlsx”)) { // Finds the workbook instance for XLSX file myWorkBook = new XSSFWorkbook(fis); // Return first sheet from the XLSX workbook mySheet = myWorkBook.getSheetAt(0); myWorkBook.close(); // Should I close myWorkBook before I get data from […]

如何使用Apache POI XSSF创建从右到左对齐的工作表

我正在尝试使用Apache POI在Excel文件中创建工作表。 由于它是Excel 2007,我正在使用XSSF,我正在寻找一种方法来使表格从右到左对齐。 在HSSF中有一个方法org.apache.poi.hssf.usermodel.HSSFSheet.setRightToLeft(boolean) ,但我在org.apache.poi.xssf.usermodel.XSSFSheet找不到它。 我正在使用Apache POI 3.7

java POI XSSF FormulaEvaluator

我保存新的Excel文件时遇到问题。 我希望它在保存时公式计算自己,但目前它只是在excel文件中返回一个字符串。 公式是正确的。 我FormulaEvaluator地知道要让FormulaEvaluator工作。 这是我输入返回字符串的公式的地方: dataRow1.createCell((short)5).setCellValue(“=VLOOKUP(A”+rowCountVlookup+”,’C:\\Users\\Admin\\Documents\\JCreator LE\\MyProjects\\WordCount\\classes\\[Pricing.xlsx]Sheet1′!$B$3:$E$41,4, FALSE)*E”+rowCountVlookup+””); 任何帮助将非常感激。

HSSFWorkbook vs XSSFWorkbook vs SXSSFWorkbook – Apache-poi

HSSFWorkbook vs XSSFWorkbook以及XSSFWorkbook和SXSSFWorkbook的优缺点 ?

在POI XSSF工作簿中为合并区域添加边框

我正在使用apache poi 3.7,我需要将边框放到一系列单元格或合并区域。 当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域。 在HSSF类型中,我使用RegionUtil- / HSSFRegionutil,但是如果在XSSF类型中使用第一个对象(Regionutil),则它不起作用并将黑色背景颜色放入单元格范围。 Regionutil通常使用CellRangeAddress,我找不到有关此问题的信息。 我不知道CellRangeAddres是否会导致这种情况。

编写XSSFWorkbook时,使用JDBC在Spring Boot应用程序中创建损坏的.xlsx文档

对于项目,我需要创建一个.xlsm excel文档,自动填写模板文件。 问题是,输出已损坏,Excel 365和Apache POI都无法读取。 我把它提炼到下面的最小例子,它可以在main方法中运行。 为了完全安全,它使用.xlsx格式。 public static void main(String[] args) { XSSFWorkbook document = new XSSFWorkbook(); XSSFSheet spreadsheet = document.createSheet(“Test”); spreadsheet.createRow(0).createCell(0).setCellValue(“Testie test”); // Output .xlsx file FileOutputStream stream; try { stream = new FileOutputStream(“test_output.xlsx”); document.write(stream); stream.flush(); stream.close(); } catch (IOException e) { System.err.println(“Error” + e.getMessage()); e.printStackTrace(); } … 创建的文件test_output.xlsx无法由Excel 365打开并且大小仅为4kb,而手动创建的文件将占用9kb,因此输出中必须缺少某些我未指定的内容? 我正在使用通过Gradle导入的Apache POI版本3.17 compile(‘org.apache.poi:poi-ooxml:3.17’) […]

通过XSSFRichTexString和Jsoup进行Apache POI Excel文本格式化

我从数据库中获取了html数据。 以下是示例: Iam Bold Iam Red Colored and Underlined Just a Normal Text Iam Bold and italic with colored and underlined 现在我的excel输出中存在相同的格式。 请参阅下面的图片了解excel输出。 我知道通过使用Jsoup,你可以解析上面的html并使用XSSFRichTextString,你可以在xssfcell中显示richtext。 同样通过使用子弹字符我可以获得子弹图标。 但我需要输出中的完整文本。 但我不知道如何准确地做到这一点来获得确切的输出。 如何使用XSSFRichTextString做到这一点? 请帮帮我

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

我正在尝试生成带有一些validation的excel文件,我已经阅读了poi dev指南来实现它。 在实现过程中,我得到了一个exception( String literals in formulas can’t be bigger than 255 characters ASCII )。 POI将所有下拉选项连接成’0’消除字符串并检查其长度并给我exception。 🙁 我正在使用最新版本的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()); […]

Excel单元格样式问题

我使用下面的代码从XLSX文件中获取日期值。 对于某些xlsx文件,这是完全正常的。 但它没有给出xlsx文件中的确切日期格式。 此问题适用于某些文件。 例如; 我有这样的日期21/01/2016 (dd/mm/yyyy)但阅读后,它给出的日期为01/21/16(mm/dd/yy) 有没有其他方法可以获得cellstyle? 是xlsx文件的问题?? String dateFmt = cell.getCellStyle().getDataFormatString(); if (DateUtil.isCellDateFormatted(cell)) { double val = cell.getNumericCellValue(); Date date = DateUtil.getJavaDate(val); String dateFmt = cell.getCellStyle().getDataFormatString(); System.out.println(“dateFmt “+dateFmt); value = new CellDateFormatter(dateFmt).format(date); System.out.println(“Date “+value); }