Apache-POI在Excel中设置了数值,但另一个单元格的公式却无法与该数值发生作用,直到我在处理条中手动按下回车键为止
我写了一个程序,将值写入xlsx文件中.乍一看,它似乎可以像应该一样工作.但是在我的xlsx文件中,我在另一个单元格中有一个公式,如果我手动输入该值,则可以正确工作,但是如果我的程序将完全相同的值设置为相同的值,则无法正常工作.如果我在编程编写值之后手动打开文件,并通过按处理条中的Enter按钮来确认书面值,则可以按照应有的工作方式进行操作.没有例外.我的程序在细胞N4和O4中编写.这是我正在谈论的单元格的Excel公式: =+max(; min(o4+(n4> o4); max(($ n $ 2> $ o $ $ 2); $ o $ $ 2))-max(n4; $ n $ 2))+max(; min(min) o4; max(($ n $ 2> $ o $ 2); $ o $ 2)) - 最大(; $ n $ 2))(n4> o4)+max(; min(o4+(n4> o4); min (($ n $ 2> $ o $ 2); $ o $ 2))-max(n4;))+min(o4
10 2024-02-29
编程技术问答社区
使用Apache POI在XLSX中创建一个复选框(Java)
我需要在XSSFSheet中创建一个Excel复选框,但是我在Java Apache POI库(4.0.1)中没有发现明显的类/方法,也没有任何示例.有什么建议吗? 解决方案 Microsoft Excel中可能有两种类型的控件.有传统形式控件和ActiveX控件.创建传统形式控件是可能的. ActiveX控制Wold要复杂得多. 传统形式控件存储在每张纸的VML图中. Apache poi有一个对于传统Checkbox控制我们需要复选框形状类型,然后在此VML图中的复选框形状. 以下代码创建两个旧复选框.​​ 方法XSSFVMLDrawing getVMLDrawing(XSSFSheet sheet)从表格中获取VML绘制或创建新的vml. 方法void addCheckboxShapetype(XSSFVMLDrawing drawing)在图纸中添加了新的复选框形状类型. 方法void addCheckbox(XSSFVMLDrawing d
160 2024-02-29
编程技术问答社区
读取Excel的标题和行值
我需要读取具有行和n. of行的Excel内容. 根据列标题输入,需要在Java中提取该行. 我读过完整Excel内容的Java代码. //Create Workbook instance holding reference to .xlsx file XSSFWorkbook workbook = new XSSFWorkbook(file); //Get first/desired sheet from the workbook XSSFSheet sheet = workbook.getSheetAt(0); int totalRows = sheet.getPhysicalNumberOfRows(); //Iterate through each rows one by one Iterator rowIterator = sheet.it
2 2024-02-29
编程技术问答社区
如何在spring mvc中使用java同时导入xls和xlsx文件?
在此方法中,我使用了用于读取XLSX文件的XSSF类,但我们不能为XLS文件进行.对于XLS,我们需要拥有HSSF类.用户可以在那里导入任何格式.我的要求,是否有任何类别的类别可以用代替XSSF和HSSF来读取这两种文件.在我的示例中,我使用了XSSF. @RequestMapping(value="/import",method = RequestMethod.POST) public ModelAndView imports(Model model, @RequestParam("excelFile") MultipartFile excelfile){ try { List lstUser = new ArrayList(); int i = 0; XSSFWorkbook workbook = new XSSFWorkbook(exc
12 2024-02-29
编程技术问答社区
将一个XSSF/HSSF-单元格复制到一个新的XSSF工作簿中
我的问题 我需要 将单元格从XSSFWorkbook s和HSSFWorkbook s复制到新的XSSFWorkbook.因此,我的单元格可以是两种类型的:XSSFCell和HSSFCell. 由恰好,我的意思是我还需要复制CellStyle,包括CellBorder和CellFill属性以及工作簿本身的DefaultRowHeight和DefaultColumnWidth .另外,应复制每行和列的高度和宽度. (复制CellStyle有时会产生奇怪的行为-behaviour">在这里). 我的问题 最好的方法是什么?我不想自己手动复制每个属性.特别是如果我不知道我的输入单元格是类型XSSFCell或HSSFCell. 解决方案 我的解决方案 我通过缩减要求解决了问题.现在我只专注于XSSFWorkbooks. 精确复制XSSFWorkbook真的很容易.要将XSSFCellStyle复制到另一个工作簿,只需使用以下代码: // Copy
6 2024-02-29
编程技术问答社区
如何使用java apache poi库在excel中设置日期字段?
我必须使用Java Apache POI库中的Excel文件(.xlsx或.xls)设置日期字段. 我已经尝试设置单元格的单元格和dataformat,但它没有将其设置为日期字段,而是将其存储为字符串或数字字段. 这是我的代码: XSSFWorkBook wb = new XSSFWorkBook(); CellStyle cellStyle = wb.createCellStyle(); CreationHelper createHelper = wb.getCreationHelper(); cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mm-yyyy")); // I have tried different formats here but none working cell = row.createCell(1); cell.setCellValue(new Date
12 2024-02-29
编程技术问答社区
XSSF Excel的命名样式
我目前正在使用Apache POI库在Java中生成Excel文件. 这是我想知道的:在Excel中,可以创建新的单元格式,以添加到工作簿中.这些样式可重复使用,可以从样式表中选择. 使用Apache POI,在构建工作簿时,您可以做类似的事情.您可以创建一个新的XSSFCellStyle,该XSSFCellStyle附加到工作簿上,并且可以根据需要应用于任意多的单元格.但是,这些样式不可重复使用.如果我在Excel中打开生成的工作簿,并更改一种单元格式,我将永远无法将其更改为XSSF中生成的未命名样式.这些样式未添加到工作簿的样式表中. 我只是想知道,是否有任何方法可以在Apache POI工作簿中创建名称样式,然后在文档打开后可以看到和恢复? 编辑:在进行进一步调查时,似乎有一种使用HSSF进行此操作的方法,我们可以使用: cellStyle.setUserStyleName("Header") 我找不到有关XSSF等效的任何信息.有人知道是否可能吗
16 2024-02-29
编程技术问答社区
如何在Java中使用POI-XSSF插入Excel文件中的表情符号
我正在使用以下代码,用于使用Apache POI-HSSF插入Excel中,请让我知道如何在Java中使用POI-XSSF插入.xlsx文件中, Workbook workBook =new HSSFWorkbook(); Sheet createSheet = workBook.createSheet("Emoji"); String str ="🤓😜"+"somevalue"; Row createRow = createSheet.createRow(0); createRow.createCell(0).setCellValue(str); //creating a file and writing the Workbook data try { FileOutputStream fileOutputStream = new FileOutputStream("/tmp/MyFirstExcel.xls"); workBook.write(fileO
16 2024-02-29
编程技术问答社区
Apache POI:Excel透视表-行标签
我需要在下面的Java中创建Excel表: 我无法与多列并排创建一个行标签(菜单和子菜单过滤器). 而不是在不同的列中显示子菜单,而是在菜单列下方. 下面是我写的代码: XSSFSheet sheet = my_xlsx_workbook.getSheetAt(0); AreaReference a=new AreaReference("A1:G7"); CellReference b=new CellReference("I5"); XSSFPivotTable pivotTable = sheet.createPivotTable(a,b); pivotTable.addReportFilter(0); pivotTable.addReportFilter(1); pivotTable.addRowLabel(2); pivotTable.addRowLabel(3); pivotTable.a
14 2024-02-29
编程技术问答社区
java.lang.OutOfMemoryError。加载xlsx文件时超过了GC的开销限制
我了解错误的含义,我的程序消耗了太多的内存,并且很长一段时间没有恢复. 我的程序只是在发生内存问题时读取6,2MB xlsx文件. 当我尝试监视程序时,它在内存消耗中很快达到1,2GB,然后崩溃.阅读6,2MB文件时,如何达到1,2GB? 有没有办法在块中打开文件?因此不必将其加载到内存中?或其他解决方案? 正好这部分导致了它.但是,由于它是一个图书馆,不应该以某种方式智能处理吗?它只有200000行,只有3列.为了将来,我需要与大约合作. 1百万记录和更多列... 代码: Workbook myWorkBook; Sheet mySheet; if (filePath.contains(".xlsx")) { // Finds the workbook instance for XLSX file myWorkBook = new XSSFWorkbook(fis)
26 2024-02-29
编程技术问答社区
泊来品Excel无法应用背景色
我正在使用POI生成Excel.我有一个场景,就像我想将背景应用于表中的单元行.但我无法执行此操作. .. 代码 System.out.println("Called"); try { XSSFWorkbook xb = new XSSFWorkbook(); XSSFSheet sheet = xb.createSheet(sheetName); XSSFCellStyle cellStyle = xb.createCellStyle(); XSSFFont font = xb.createFont(); int rowIdx = 10; short cellIdx = 1; CommonUtils.getGlobalVariable("GLOBAL.M_COMP_CODE")); int row
6 2024-02-29
编程技术问答社区
JAVA的Apache POI自定义格式
我正在使用POI版本: 3.14 i访问excel( .xlsx )文件 this.workbook = WorkbookFactory.create(new FileInputStream(f.getPath())); this.workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); this.sheet = workbook.getSheetAt(0); 这是应用于单元格的.xlsx文件中的自定义格式.我想在我的代码中显示单元格值. 您可以看到文件中可见的单元格值为" 031642153283700100".同样,当我对这个特定的单元格进行关注时,值将更改为" 42153283700100"(应用自定义格式的数据). 编辑 原始单元格类型是cell_type_numeric. ==> 如何在Java代码中显示格式化的值" 031642153283700100"? 我尝试了:
22 2024-02-29
编程技术问答社区
使用Apache POI的 "错误:找不到符号"
这是我的代码: import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Reader { public static void read_excel() { File excel = new File ("C:\\Users\\Username\\Desktop\\java-Tools\
40 2024-02-29
编程技术问答社区
为XSSFSheet设置顶行和左列
我试图确保文件打开时左上方的XLSX表. XSSFSheet有getLeftCol() 方法,但是没有固定器. PaneInformation pane = sheet.getPaneInformation(); if (pane == null) { // FIXME doesn't work when there is no pane sheet.showInPane(CellAddress.A1.getRow(), CellAddress.A1.getColumn()); } else { // OK sheet.showInPane(pane.getHorizontalSplitPosition(), pane.getVerticalSplitPosition()); } 我试图查看可以从XSSFSheet类访问的内容,但是所有基础方法都是私有的. 有人知道一种将纸张视图重置到左上方单元格的方法吗? 解决方案 似乎与POI对象没有直接设置.但是CT
10 2024-02-29
编程技术问答社区
读取xlsx文件时,XSSFWorkbook和WorkbookFactory运行缓慢
几年前,我已经看到开发人员遇到了这个问题.我研究了许多论坛和官方POI文件.尽管如此,我还没有找到答案. 所以问题是..我尝试了以下两个片段: Workbook wb = WorkbookFactory.create(new File("spreadsheet.xlsx")); 和 File file = new File("C:\\spreadsheet.xlsx"); OPCPackage opcPackage = OPCPackage.open(file.getAbsolutePath()); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); ,这两种方法都需要大约5-6min(如果应用程序不用完存储器)来处理一个简单且相当小的电子表格.xlsx文件(200KB). 我需要做什么来解决这个问题? (我正在使用Apache POI 3.9) /**************************
10 2024-02-29
编程技术问答社区
如何用Java在excel中写出一列列的数据?
i在ArrayList中有一个数据列表,其中包含标题以及与之相关的值.像下面一样, Fruits Apple Orange ****** Vegetables Beans Carrot Brinjal Cucumber ****** Colors Orange Blue Red Green Yellow Now, I want to write the values in `excel` with each heading and the associated values in column-wise. Like below, Fruits Vegetable Colors Apple Beans Orange Orange Carrot Blue Brinjal Red Cucumber Green Yellow 我正在用j
6 2024-02-29
编程技术问答社区
如何使用Apache POI将Excel文档中的一个区域转换为一个表格?
我已经编写了一个应用程序,该应用程序从数据库中获取数据,并使用Apache POI库中的XSSF类从上述数据中创建Excel文档.我导入POI,POI-OOXML和POI-OOXML-SCHEMAS,所有版本4.1.0. 文件写得很好,打开文件时没有错误,直到我删除表格创建代码为止,我将在下面粘贴: CellReference topLeft = new CellReference(sheet.getRow(3).getCell(0)); CellReference bottomRight = new CellReference(sheet.getRow(nextRow-1).getCell(3)); AreaReference tableArea = workbook.getCreationHelper().createAreaReference(topLeft, bottomRight); XSSFTable dataTable = sheet.createTable(t
2 2024-02-29
编程技术问答社区
在Apache POI API中提取电子表格列中的数据
只想确保一件事. Apache POI API是否具有电子表格中的列的内置收集/对象,例如行和单元格? 还是我必须自己构建一个,并在其中的列中添加所有单元格才能进行排序等?还有其他更好的方法吗? 解决方案 Excel格式是基于行的,而不是基于列 - 文件是按顺序与每个单元格编写的,然后是一些行信息,然后在下一行的单元格等./p> 因此,如果您想在列中做某事,则需要自己收集细胞.可能是: int columnWanted = 3; List cells = new ArrayList(); for (Row row : sheet) { Cell c = row.getCell(columnWanted); if (c == null || c.getCellType == Cell.CELL_TYPE_BLANK) { // Nothing in the cell in this row, skip it
6 2024-02-29
编程技术问答社区
使用Apache.POI读写Excel的Java内存问题
我正在尝试读取Excel文件...进行一些更改...保存到新文件. 我创建了带有按钮的小型形式...在按下按钮上. 它将加载Excel文件并将所有数据加载到我创建的类的数组列表中. 它将通过数组列表循环并更改对象中的几个属性. 它将数据将数据保存到新的Excel文件. 最后,它将清除数组列表并显示完整的消息框. 现在问题是内存问题. 加载表单后,我可以在Windows任务管理器中看到... Javaw使用大约23MB. 在读写期间,excel ...内存的射击最高为170MB. 清除阵列列表后....内存没有清理,并且停留在150MB左右. 以下代码将事件附加到按钮单击. MouseListener mouseListener = new MouseAdapter() { public void mouseReleased(MouseEvent mouseEvent) { if (SwingUtilitie
18 2024-02-29
编程技术问答社区
Apache poi XSSF 创建Excel文件-创建返回空文件的格式或文件扩展名无效?
控制器类的相关部分: @RequestMapping(value = "/DBCompare/download", method = RequestMethod.GET) public void handleDownloadDBCompareReportGet(HttpServletResponse response, Model model){ try{ reportService.downloadResultsDto(reportDto); } finally{ } } 在这种情况下,Reportservice仅从数据库中获取了一些信息,并从CreateTable类中调用NewTableCompare(). 以下课程应创建一个新的Excel表,工作簿等. import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; impor
10 2024-02-29
编程技术问答社区