Tag: java

如何加快自动化apache POI的列?

我使用下面的代码来自动化电子表格中的列: for (int i = 0; i < columns.size(); i++) { sheet.autoSizeColumn(i, true); sheet.setColumnWidth(i, sheet.getColumnWidth(i) + 600); } 问题是在超过3000行的大型电子表格中,每个列需要10多分钟的时间自动resize。 尽pipe小文件的速度非常快。 有什么可以帮助autosizing更快地工作吗?

在使用Apache POI的Excel单元格中编写数字

如何在poi的帮助下在单元格中写下我的全部价值? 即如果值是1000.000,那么我怎样才能写这个完整的值,而不会截断“000”后的000。 有POI? 意味着我想要充分的价值。 在我的情况下,只需要1000,但这是不正确的格式。

如何从XLS(Excel)文件读取数据

我已经search了stackoverflow,但我没有find明确的答案。 我怎样才能从我的Android应用程序的XLS文件的特定行和列读取数据? 我怎样才能读取XLS文件? 我不想将它转换为CSV,因为当我尝试转换它们时出现错误。 也许我可以使用这个http://www.andykhan.com/jexcelapi/tutorial.html#reading,但我甚至不知道如何将其导入到我的项目。 请帮忙。

使用apache poi 3.7多次写入xlsx文档时出现exception

尝试使用Apache POI编写.xlsx文件时出现以下exception: org.apache.xmlbeans.impl.values.XmlValueDisconnectedException 这似乎是第二次使用方法write()的问题。 当处理这个问题的HSSFWorkbook不会出现。 代码如下: public class SomeClass{ XSSFWorkbook workbook; public SomeClass() throws IOException{ File excelFile = new File("workbook.xlsx"); InputStream inp = new FileInputStream(excelFile); workbook = new XSSFWorkbook(inp); inp.close(); } void method(int i) throws InvalidFormatException, IOException { XSSFSheet sheet = workbook.getSheetAt(0); XSSFRow row = sheet.getRow(i); if (row == null) { row = sheet.createRow(i); } […]

POIperformance

我在我的J2EE Web应用程序中使用POI来生成工作簿。 但是,我发现POI需要大约3分钟来创build一个25K行的工作簿(每列大约15列)。 这是一个POI的性能问题,还是花了很多时间是合理的? 是否有其他的API更好的性能?

使用apache poi更改单元格颜色

我正在使用Apache POI来读取零件编号电子表格中的数据。 我在数据库中查找零件编号,如果我们有一个零件编号单元格绿色的零件的CAD图纸,如果我们不把它颜色为红色。 处理完成后,电子表格被保存。 我遇到的问题是该列中的每个单元格都是绿色的。 我已经通过代码,查找部件号的逻辑工作正常,并确定单元格应该是什么颜色的逻辑,设置颜色和填充似乎也工作。 任何想法我在这里做错了吗? 谢谢。 //Check the parts for(int r=1;r<sheet.getPhysicalNumberOfRows();r++) { String partNumber = null; switch(cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: long pNum = (long) cell.getNumericCellValue(); partNumber = String.valueOf(pNum); break; case HSSFCell.CELL_TYPE_STRING: partNumber = cell.getStringCellValue(); break; default: logger.info("Part Number at row " + r + " on sheet " + partList.getSheetName(s) + "is of […]

如何使用Apache POI 3.6在Excel表格中获得超过255列

我在Excel中创build一个日历。 第1列是01.01.2010(dd.MM.yyyy),第2列是02.01.2010等等。 这是我的代码: int day_cell = 0; for(int i = 0; i < days.size(); i++) { Date day = days.get(i); HSSFCell cell = row.createCell(day_cell++); cell.setCellValue(day.toString()); } 当我到达第256栏时,POI引发这个exception: java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') at org.apache.poi.hssf.usermodel.HSSFCell.checkBounds(HSSFCell.java:926) at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:162) at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:141) at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:119) 我发现这个bug报告表明它已经在3.6版本中修复了。 我们使用3.5,但改为3.6似乎没有任何好处。 任何人有任何提示? https://issues.apache.org/bugzilla/show_bug.cgi?id=46806 编辑:似乎错误问题是关于公式..

如何使用POI处理旧的excel .xls文件?

由于POI有更多的function,我从jxl切换到poi。 但是,我无法处理以旧格式生成的xls文件。 现在我得到这个错误: org.apache.poi.hssf.OldExcelFormatException:提供的电子表格似乎是Excel 5.0 / 7.0(BIFF5)格式。 POI仅支持BIFF8格式(从Excel版本97/2000 / XP / 2003) 现在我正在考虑使用两个JXL以及POI,这取决于xls版本,因此对于旧格式的xls文件,我将使用jxl,而对于新版本,我将使用POI。 这是一个很好的解决scheme? 有没有其他的select?

使用apache poi合并和排列中心单元格

我想用Apache poi将数据导出为ex​​cel。 现在我面临的问题是我无法合并行并将它们alignment在中心。 导出数据的代码是 List<LinkedHashMap<String,Object>> lstReportHeader = null; HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //Set Header Font HSSFFont headerFont = wb.createFont(); headerFont.setBoldweight(headerFont.BOLDWEIGHT_BOLD); headerFont.setFontHeightInPoints((short) 12); //Set Header Style CellStyle headerStyle = wb.createCellStyle(); headerStyle.setFillBackgroundColor(IndexedColors.BLACK.getIndex()); headerStyle.setAlignment(headerStyle.ALIGN_CENTER); headerStyle.setFont(headerFont); headerStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM); int rowCount= 0; Row header; header = sheet.createRow(0);//its for header Cell cell ;//= header.createCell(0); for(int j = […]

如何更改特定单元格的颜色apache poi 3.9

我可以在apache POI中使用以下代码更改前景色。 现在我想改变单个单元格的字体颜色。 CellStyle style = wb.createCellStyle(); style.setFillForegroundColor(IndexedColors.GREEN.getIndex()); style.setFillPattern(CellStyle.SOLID_FOREGROUND); cell = rowxl.createCell((short) 7); cell.setCellValue(" <<<<ONTRACK>>>>"); cell.setCellStyle(style); rowxl.createCell(0).setCellValue(TEAM); 我已经尝试过,但它不会改变前两列的颜色 码: public class fclr { public static void main(String[] args) throws Exception { InputStream inp = new FileInputStream("c:/workbook1.xls"); Workbook wb = WorkbookFactory.create(inp); CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet = wb.getSheetAt(0); Row rowxl = sheet.createRow((short)0); Cell cell = […]