Tag: apache poi

如何使用列名迭代在Excel表中的当前行?

我需要parsing一个Excel工作表,并从每一行检索值存储在数据库中。 目前,我正在根据每个单元格所具有的值的types来执行此操作。 在目前的情况下,这是可以的,因为我只需要处理两列。 但是我有一个新的需求来parsing一个超过12列的Excel表。 在这种情况下怎么做呢? 有没有一种方法,我可以迭代基于列的每一行,如果我使用表头的结构化表? 我目前的代码如下。 File file = new File(UPLOAD_LOCATION + fileUpload.getFile().getOriginalFilename()); FileInputStream excelFile = new FileInputStream(file); Workbook workbook = new XSSFWorkbook(excelFile); Sheet datatypeSheet = workbook.getSheetAt(0); Iterator<Row> iterator = datatypeSheet.iterator(); while (iterator.hasNext()) { Row currentRow = iterator.next(); Iterator<Cell> cellIterator = currentRow.iterator(); while (cellIterator.hasNext()) { Cell currentCell = cellIterator.next(); // getCellTypeEnum shown as deprecated […]

如何评估这个公式在Apache的poi?

在Microsoft Office Excel中,我将此公式设置在单元格中。 =YEAR("2017-01-01") 。结果是2017 。 在apache-poi中,我也是这样做的。 cell.setCellFormula("YEAR(\"2017-01-01\")"); 但是我得到一个错误的结果。 #VALUE! 如何得到正确的结果? 码 HSSFWorkbook hssfworkbook = new HSSFWorkbook(); HSSFSheet sheet = hssfworkbook.createSheet("Sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellFormula("YEAR(\"2017-01-01\")"); CreationHelper creationHelper = hssfworkbook.getCreationHelper(); FormulaEvaluator evaluator = creationHelper.createFormulaEvaluator(); System.out.println(evaluator.evaluate(cell)); 安慰 org.apache.poi.ss.usermodel.CellValue [#VALUE!] 使用apache-poi 3.16

指导如何通过Apache poi读取date单元格

我正在导入一个有很多行的excel文件。 有些列是date,我必须阅读它们,但单元格的格式没有被Apache poi正确读取。 实际上date必须是dd / MM / YYYY,但是当我有04/13/2017 Apache poi图书馆认为它是在MM / dd / YYYY格式,因此读取date。 我怎样才能告诉Apache poi阅读正确格式的date? 下面是我的代码的一个例子: case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { Date d = cell.getDateCellValue()); System.out.println(myWorkBook.getSheetName(i) + " " + cell.getNumericCellValue() + "\t"); }

使用HSSFSheet将列格式types设置为date或时间

我想将我的列Mobile_Time设置为时间/date时间types列。 我努力了 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub DAO d0 = new DAO(); Map<String, String> AllUsermap = new HashMap<String, String>(); AllUsermap = d0.colleagueMap(Integer.parseInt(request.getParameter("lid")), request.getParameter("ltype")); String date = request.getParameter("date"); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=All Employees Tracking Report [Date]:" + date + ".xls"); Workbook workbook = new HSSFWorkbook(); Font […]

使用Apache POI Java从Excel中获取包含date公式的单元格的date值

我试图从Excel文件中读取一切正常的单元格值。 但是,当来到公式,特别是date字段,我无法获得任何date值。 我如何检查评估的CellValue中的datetypes? 以及如何获取date值? 我的代码如下。 Cell cell = nextRow.getCell(cellIndex, Row.CREATE_NULL_AS_BLANK); if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); CellValue formulaValue = evaluator.evaluate(cell); switch (formulaValue.getCellType()) { case Cell.CELL_TYPE_NUMERIC: { int numbericValue = formulaValue.getNumericValue(); // 42909.0 if (isCellDate?) { //What should i check here? // DATE THINGS // how to convert numeric value 42909.0 to date?? […]

在Apache poi中的数组公式

我有一个Excel表格(xslx),我已经定义了一个数组公式( https://support.office.com/zh-cn/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686- 9372-ECFD5CAA57C7 )。 这就像在excel itselt中的魅力一样。 我使用apache poi来编程该excel表单中的一些值。 操作后,我想重新计算该数组公式的结果,但我不知道该怎么做。 用“正常”的公式我做如下: FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); XSSFRow row = sheet.getRow(i); Cell cell = row.getCell(j); evaluator.evaluateCell(cell); double value = cell.getNumericValue(); 对于使用数组公式的方法 void setCellArrayFormula(String formula, CellRangeAddress range) 在类XSSFCell和 public CellRange<XSSFCell> setArrayFormula(String formula, CellRangeAddress range) 在类XSSFSheet中。 通过像cell.setCellArrayFormula("SUM(ABS(H2:H5))", new CellRangeAddress(2,5,7,7));调用设置公式后cell.setCellArrayFormula("SUM(ABS(H2:H5))", new CellRangeAddress(2,5,7,7)); 我不知道如何得到该公式的结果(但我也不知道这是否是在Apache poi中使用数组公式的正确方法。在Excel中,我必须这样做{=SUM(ABS(H2:H5))} ) 有谁知道如何在apache poi中使用数组公式? 谢谢!

在apache poi条形图中使用excel单元格外的值

我正在尝试在使用Apache poi的excel文件中创build条形图,并遵循下面提到的代码: 使用Apache POI在Excel中创build条形图 。 在我的情况下,我需要使用来自不同来源,而不是Excel单元格的数据值。 我怎样才能在BarChart中使用这些值? 假定这些值将以float / double值的数组forms出现。 此外,我需要能够独立设置酒吧颜色。 例如,一些酒吧将是绿色的,而其他酒吧将是红色的。 我用以下方式修改了在Excel中使用Apache POI代码创build条形图的数据部分: CTBarSer ctBarSer = ctBarChart.addNewSer(); CTSerTx ctSerTx = ctBarSer.addNewTx(); CTStrRef ctStrRef = ctSerTx.addNewStrRef(); ctStrRef.setF("hardcoded" + r); ctBarSer.addNewIdx().setVal(r-2); CTAxDataSource cttAxDataSource = ctBarSer.addNewCat(); CTStrData ctStrData = cttAxDataSource.addNewStrLit(); ctStrData.addNewPt().setV("Val1"); ctStrData.addNewPt().setV("Val2"); ctStrData.addNewPt().setV("Val3"); CTNumDataSource ctNumDataSource = ctBarSer.addNewVal(); CTNumData ctNumData = ctNumDataSource.addNewNumLit(); CTNumVal ctNumVal = ctNumData.addNewPt(); ctNumVal.setV(String.valueOf(0.92)); ctNumData […]

使用由NullPointerException引起的Apache POI-POIXMLException将工作表附加到Excel文件

这是我的代码: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.xssf.usermodel.*; public class testingsyncclass { public static void main(String[] args) throws IOException, InvalidFormatException{ writeParametersTableToFile("C:/ENTERPRISE_TESTING", "XLSX_TEST", "SHEETNAME"); } public static void writeParametersTableToFile(String fileLocation, String fileName, String tableLocator) throws InvalidFormatException{ String[] columnHeaders = {"What", "is", "a", "computer", "?"}; ArrayList<Object[]> xlsxFileData = new ArrayList<Object[]>(); for(int i […]

限制Excel使用apachePOI在Java中不使用OS默认date格式

您好我正在使用Java中的apachePOI生成xls文件。 我有date栏目。 现在的问题是,Excel从默认的操作系统设置中selectdate格式。 我有一个问题,我希望Excel总是selectdd-mm-yyyy。 但是操作系统设置为美国的系统会selectmm-dd-yyyy。 所以像17-2-2017这样的有效date在美国系统中是无效的,因为没有17个月。 所以我的问题是我可以强制Excel使用我想要的date格式。 换句话说,我可以限制Excel不使用操作系统设置。 如果不可能的话,赞赏任何其他解决方法。 谢谢。 码: private static void doCreate() throws FileNotFoundException, ParseException { Workbook workbook; Row row; Sheet spreadsheet; workbook = new HSSFWorkbook(); spreadsheet = workbook.createSheet("Order Details"); dateCellStyle = workbook.createCellStyle(); // LocaleUtil.setUserTimeZone(LocaleUtil.TIMEZONE_UTC); // // Locale.setDefault(); // final String excelFormatPattern = DateFormatConverter.convert(Locale.JAPANESE, "dd MMMM, yyyy"); // // final DataFormatter dataFormatter […]

Apache POI – 每张表中条件格式的最大数目

有谁知道,如果有的话,每一张纸条件格式规则的最大数量是多less? 提前致谢!