Tag: java

使用XLSX Apache poi的Java临时文件

.hi,我正在尝试创build一个临时的.xlsx文件,并使用apache poi写入。 我得到EmptyFileException创build工作簿。 这是代码: public class Writer{ File file; public File Write(List<FormData> l, Class elementClass) { try {//create temp fiele here file = File.createTempFile(elementClass.getSimpleName(),".xlsx"); } catch (IOException ex) { Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex); } XSSFWorkbook workbook; XSSFSheet sheet; if (file.exists()) { FileInputStream inputStream; try { inputStream = new FileInputStream(file); } catch (FileNotFoundException ex) { throw new […]

POI Java将xlsx转换为CSV逗号和双引号

尝试将xlsx转换为CSV,其中一列有多个引号和逗号,当转换为CSV时,它被分隔到不同的单元格而不是一个单元格。 以下是场景, 标题正在移动到多个,附上代码 if(cell.getStringCellValue().contains(",")){ if (cell.getStringCellValue().contains("\"")){ String t= "\""+cell.getStringCellValue()+"\""; data.append(t+","); } else{ data.append("\""+cell.getStringCellValue()+"\""+","); } }

以像素为单位获取Excel列的宽度,而不是默认的度量单位

从我进行的一些实验看来,从阅读本页开始 ,Excel中列宽度和行高度的默认度量单位不是像素,甚至不是像厘米这样的标准度量,但它们是适合空间。 我正在使用Aspose Cells for Java。 如何获得像素的列的宽度?

Java – Eclipse从SQL查询到Excel

从每个返回的logging中获取我希望第5行的SQL查询的结果。 我想将数据导出到Excel电子表格中,从第二行开始(我有标题)。 我的SQL逻辑显然是现在,因为我得到的第一个结果增加了十三倍的行和列,虽然它是正确的第二行开始,只出去了13列。 第二个结果以这种方式重复,每个连续的结果也一样。 (rs.next()){for(int i = 0; i <13; i ++){ package process; import java.util.Scanner; import java.io.*; import java.sql.*; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFCell; public class Sec_Completions { public static void main(String[] args) { Sec_Completions obj_Sec_Completions=new Sec_Completions(); obj_Sec_Completions.Check_Data(); } public void Check_Data() { Scanner scanner = new Scanner(System.in); System.out.println("Enter the beginning […]

如何保存文件而不用覆盖现有的同名文件

我正在尝试将文件另存为* .xlsx而不覆盖具有相同名称的现有文件。 我想在只有指定文件存在的情况下,才能将新的数字后缀添加到新的文件名中,例如file(1).xlsx,file(2).xlsx。 在这里,我已经尝试了迄今为止: do { s = JOptionPane.showInputDialog("Enter the name of the file name"); File tmpDir = new File(System.getProperty("user.home"), "Documents\\Challan_Reports\\" + s + ".xlsx"); boolean exists = tmpDir.exists(); if (exists) { JOptionPane.showMessageDialog(this, "File Name Already exists try again!"); } else { break; } } while (true); if (s.equals("") || s.equals(null)) { //………………………………………………………………. File tmpDir […]

如何将单元格的背景颜色设置为任何RGB值?

我试图设置一个单元格背景颜色像这样的RGB值 XSSFCellStyle instructionStyle = wb.createCellStyle(); instructionStyle.setWrapText(true); XSSFColor myColor = new XSSFColor(new java.awt.Color(0, 73,144)); instructionStyle.setFillForegroundColor(myColor); instructionStyle.setAlignment(HorizontalAlignment.CENTER); 甚至它编译的水平alignment中心没有其他的效果,单元格的look.can有人告诉我什么是错误的代码?谢谢

使用Java将.csv或.xlsx文件导入到mysql数据库中?

是的,这听起来像是重复的。 我在Intellij上练习Java的升技,并试图编写一个程序来将.xls excel文件导入到mysql数据库中。 重复的问题,是的,但网上拖网没有多less收益。 我下面的代码目前完成导入任何xls文件的工作。 不幸的是,它没有为.csv文件和xlsx文件做任何事情。 当我尝试使用.csv文件时,会引发以下错误: Invalid header signature; read 0x6972702C74786574, expected 0xE11AB1A1E011CFD0 – Your file appears not to be a valid OLE2 document 当使用xlsx文件时,下面的代码被抛出为错误: Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. […]

如何使用Apache POI(SXSSF)为特定单元格设置数据(数字)格式区域设置?

问题是非常具体的:使用Apache POI,我想创build单元格(完成),为其分配数字格式(完成),并设置格式的语言环境( 卡在这里 )。 代码如下所示: SXSSFWorkbook workbook = new SXSSFWorkbook(100); Sheet sheet = workbook.createSheet(); Row row = sheet.createRow(1); Cell cell = row.createCell(0); CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(8); //currency with thousands separator and two decimal places after period cell.setCellValue(123456.78); //??? how to set custom locale for the cell's number format? 我试图解决与自定义区域设置的问题是自定义千位分隔符字符(法国的非rest空间对我来说是好的)。 XLSX工作簿允许这样的自定义(更新:我的意思是设置格式区域设置每个单元格),这是可以实现与MS Office和OpenOffice。 我想在代码中做同样的事情。 (Apache POI […]

为什么不能使用Apache POI“正确”隐藏Excel行?

为什么不可能使用Apache POI(3.16)“正确”隐藏Excel行? 可以调用(XSSFRow)row.setZeroHeight(),这也是繁忙的开发人员指南build议。 但是,这不像Excel那样隐藏行。 您可以使用相应的上下文菜单选项“隐藏”和“取消隐藏”行。 我认为设置行风格应该工作,但它不。 在生成的Excel文件中,行仍然可以看到。 package de.mwe; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.testng.Assert; import org.testng.annotations.Test; public class MWE { @Test public void testHidingRows() { final XSSFWorkbook wb = new XSSFWorkbook(); String sname = "HideRowsTestSheet", cname = "TestName", cvalue = "TestVal"; XSSFSheet […]

Apache POI复制具有n次公式的行

我有一个6列和50k行的表。 我想复制一行n次。 现在我正在这样做: for (int i=0; i<=excel_max_row; i++) { row = sheet3.createRow((short) i); cell = row.createCell(0); cell.setCellFormula("IFERROR(LOOKUP(Template!A"+(i+2)+",'Dropdown-Values'!A:A,'Dropdown-Values'!B:B),\"\")"); cell = row.createCell(1); cell.setCellFormula("IF(Template!B"+(i+2)+"=0,\"\",Template!B"+(i+2)+")"); cell = row.createCell(2); cell.setCellFormula("IFERROR(LOOKUP(Template!C"+(i+2)+",'Dropdown-Values'!C:C,'Dropdown-Values'!D:D),\"\")"); cell = row.createCell(3); cell.setCellFormula("IFERROR(LOOKUP(Template!D"+(i+2)+",'Dropdown-Values'!E:E,'Dropdown-Values'!F:F),\"\")"); cell = row.createCell(4); cell.setCellFormula("IFERROR(LOOKUP(Template!E"+(i+2)+",'Dropdown-Values'!E:E,'Dropdown-Values'!F:F),\"\")"); cell = row.createCell(5); cell.setCellFormula("IF(Template!F"+(i+2)+"=0,\"\",Template!F"+(i+2)+")"); } XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); 它的工作原理很慢,因为excel_max_row可以达到50k。 有没有办法快速复制连续n次所有的Forumals? 非常感谢