Tag: jxls

用JXLS限制内存中的行数

我想用库来读取xls文件, JXLS看起来非常有用,因为映射可以在XML文件中configuration。 在这种情况下,我有一个非常大的文件的性能问题,是否有可能限制在内存中的行数,使文件一次读取N行? 谢谢。

JXLS忽略模板样式,我如何强制它保持模板文件中的列宽?

我正在使用JXLS生成使用自定义模板的Excel文件。 该模板只是标准的网格出口模板,除了我已经改变了模板文件中的一些列的宽度。 我的代码大部分只是示例代码的副本。 private void exportAsXLS(List<CalExportItem> exportItems, OutputStream os1) { try (InputStream is = CalDataExporter.class.getClassLoader().getResourceAsStream(TEMPLATE_FILEPATH)) { xlsExporter.registerGridTemplate(is); xlsExporter.gridExport(Arrays.asList(HEADERS), exportItems, FIELDS, os1); } catch (Exception e) { LOGGER.error("Exception exporting as XLS", e); } } 我基本上只是复制了“SimpleExporter”示例 public class CalXlsExportHelper { private static final Logger LOGGER = LoggerFactory.getLogger(CalXlsExportHelper.class); private byte[] templateBytes; public void registerGridTemplate(InputStream inputStream) throws IOException { […]

java.lang.OutOfMemoryError:使用XLSReader将Excel文件读入java bean时的Java堆空间

我得到java.lang.OutOfMemoryError:在使用XLSReader读取Excel文件到Java bean时的Java堆空间 这是代码片段。 public static <T> List<T> parseExcelFileToBeans(final File xlsFile, final File jxlsConfigFile) throws Exception { final XLSReader xlsReader = ReaderBuilder.buildFromXML(jxlsConfigFile); final List<T> result = new ArrayList<>(); final Map<String, Object> beans = new HashMap<>(); beans.put("result", result); try (InputStream inputStream = new BufferedInputStream(new FileInputStream(xlsFile))) { xlsReader.read(inputStream, beans); } return result; }

JXLS公式不按指定的字段分组输出

我正在创build一个报告,我需要输出我的数据结构到Excel电子表格。 为此,我使用JXLS,但是在创buildjx公式以正确输出数据时遇到了麻烦。 我有一个types的人名单: List<Person> people = new ArrayList<Person>(); 在我的Person类中,它具有以下属性: String name; String age; List<Pet> listOfPets; 对于我正在使用的一些假数据: petList1.add("Dog"); petList1.add("Cat"); people.add(new Person("Joseph", "18", petList1); petList2.add("Dog"); petList2.add("Fish"); people.add(new Person("Tommy", "18", petList2); petList3.add("Bird"); petList3.add("Dog"); people.add(new Person("Sally", "19", petList3); 我希望这在Excel显示按年龄分组。 举个例子: Age 18: Name: Joseph Age: 18 Pets: Dog, Cat —————- Name: Tommy Age: 18 Pets: Dog, Fish Age 19: […]

JXLS的XLSReader是否closures工作簿?

我想知道jxls的XlsReader类是否closures工作簿。 我的代码是这样的: XLSReader mainReader = ReaderBuilder.buildFromXML(inputStreamXml); mainReader.read(inputStreamXLS, beans); 在XLSReader中没有像closures的方法。 当试图closures工作簿时,我试图在内部代码中find一些点,但找不到。 这是读取方法的内部实现: public XLSReadStatus read(InputStream inputXLS, Map beans) throws IOException, InvalidFormatException{ readStatus.clear(); Workbook workbook = WorkbookFactory.create(inputXLS); for(int sheetNo = 0; sheetNo < workbook.getNumberOfSheets(); sheetNo++){ readStatus.mergeReadStatus(readSheet(workbook, sheetNo, beans)); } return readStatus; } 有时xls文件被应用程序locking,因为我找不到在我的代码中没有释放资源的任何一点,我不知道问题是否是jxls。 显然XLSReader不closures工作簿。 我的应用程序closuresinputStreams。 应用程序是否也需要closures工作簿?

Jasper Report或BIRT

我想在javaee应用程序中使用模板基础报告框架,如jxls,Jasper Report或BIRT,因为它允许我只修改满足客户要求的模板,而无需重新编译Java源代码。 我使用jxls,但我有一个dynamic的查询和输出列的数量随时间变化,所以数据库结果集转换为: List<Object[]> 。 为了生成excel报告,将下面的代码添加到excel中: <jx:forEach items="${rows}" var="row"> <jx:forEach items="${row}" var="cell"> ${cell} </jx:forEach> </jx:forEach> 但是,如果我有超过1000个元素的列表,它会产生超时exception。 你怎么看? 问题是什么? jxls是不好的select? 问候

POI – ZIP条目太大

我使用JXLS来创build我的woorkbook。 JXLS在下面使用POI。 要创build工作簿,JXLS需要一个File或一个inputstream。 用文件对象,我得到我想要的woorkbook。 但是,随着stream我得到错误邮政编码条目太大 。 JXLS lib使用 WorkbookFactory.create() 方法来创build工作簿。 所以,我试着用ZipStream和PushbackStream; 没有帮助。 我能够从我的Junit运行相同的代码。 我读了下面的post。 为什么在尝试使用Apache POI打开Excel文件时,出现exception“IOException:ZIP条目大小太大”? 。 这个post的解决scheme是,Maven的一个变化。 但是,这个post没有提到Maven所做的改变。 你有什么build议吗?

Play Framework 1.2.5 Excel模块无法parsing单元格标记jx:forEach

嗨,下面是我的Java方法 public static void csvReport(String date) throws Exception { request.format = "xlsx"; renderArgs.put(RenderExcel.RA_ASYNC, true); renderArgs.put("results", currentResults.values()); renderArgs.put("date", date); render(); } 然后我的看法看起来像 <jx:forEach items="${results}" var="result"> ${result.simpleName} ${result.version} ${result.registerCount} ${result.uniqueAccess} ${result.totalAccess} ${result.updateCount} </jx:forEach> 但是当我运行这个时,我得到一个NullPointerException因为在属性处的分析失败,该属性上的开放引用。 有任何想法吗?

JXLS无法正确读取长度大于10的数字

我正在使用jxls从excel文件中读取数据。 但是,当我试图读取像12345678912这样的数字时出现了错误:除非将此列的格式设置为Text否则将转移到1.2345678E10 。 有没有什么我可以做的,而不是将列设置为Text解决这个问题? 任何帮助,将不胜感激。

jxls转换在定义的命名范围中创build错误

我有一个如下的Excel模板 第一张是命名状态它有以下数据 Cell A1 –> State Cell B1 –> Count Cell A2 –> B4 <jx:forEach items="${stateList}" var="row"> ${row[0]} ${row[1]} </jx:forEach> 我有一个名为Range StateNames,定义为= OFFSET(State!$ A $ 2,0,0,COUNTA(State!$ A $ 2:State!$ A $ 100),1),这是假devise算为A2 – > Last填充的值,所以如果有20个状态,那么它将评估为A2 – > A21 问题是在转换之后,命名范围包含= OFFSET(状态!#REF!,0,0,COUNTA(状态!#REF!:状态!$ A $ 100),1) 基于我的研究的原因似乎是,由于A2细胞转化为A2:A21,命名的范围试图用State!$ A $ 2:$ A $ 21代替State!$ A $ 2,并且由于OFFSET函数不期望范围。 我需要帮助来弄清楚如何解决这个问题。 我需要命名的范围稍后在图表中使用。 […]