Tag: apache poi

无法从具有POI的STRING单元获取NUMERIC值

从使用POI和Java的Excel文件中读取列我要: package main; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { InputStream fs = new FileInputStream("/…/ListProducts.xls"); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); Map<String, Integer> map = new HashMap<String,Integer>(); […]

使用Apache Poi,我如何创build多值电子表格单元格,以便在MS Excel中正确显示,而不仅仅是OpenOffice

我正在使用Jakarta Poi从Java创build一个可以在Excel / Office中打开的.xlsx文件。 其中一些单元格代表多个值,最初为null,例如当我在单元格中设置'fred / u000 / tom'时,我用'\ n'replace空字符 这一切都适用于OpenOffice,它提高了这些行的高度,以适应多行。 但是我发现OpenOffice以xlsx格式和xls格式打开文件需要更长的时间,所以我投资了Microsoft Excel,并在同一行中显示了所有值。 如果你去编辑一个值然后Excel增加高度来容纳多个值,但为什么不读它。 由于没有必要编辑电子表格,还有其他的东西可以用来代替'\ n'或者一些选项来强制Excel显示OpenOffice这样的文件 代码提取 private void addFieldValue(Session session, Worksheet sheet, Row r, int spreadsheetIndex, SongFieldNameColumnWidth sfncw, SongChanges fieldChanges, Song song) { SongFieldName songFieldName = sfncw.getSongFieldName(); String value = ""; org.apache.poi.ss.usermodel.Cell c ; c=r.createCell(spreadsheetIndex); //Chnanges have been made to this field if(fieldChanges!=null) { […]

使用成员类variables来读取Apache POI Java

嗨如何创build一个循环中的dynamic对象来存储对象中的多个值。 然后访问这些对象进行操作。 是否有可能给对象创builddynamicvariables名称。 我可以给赋值的左侧的variables的dynamic值吗? 如果问题不清楚,请问我编辑,如果解决scheme已经可用,请指出。 package poi; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ExcelRead_UsingMember { public static int C, R, i; public static double ID; private static final String FILE_READ = "C:/Users/m93162/ApachePOI_Excel_Workspace/MyFirstExcel.xlsx"; //private static final […]

HSSFCell阅读空错误?

我一直在试图为一个志愿者项目编写一个Excel到JSON的转换器,但我一直遇到无法解释的错误,拒绝纠正。 这是我的错误: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at bin.parse.MembersParser.tryString(MembersParser.java:112) at bin.parse.MembersParser.parseFile(MembersParser.java:53) at bin.ParserFrame.actionPerformed(ParserFrame.java:61) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) […]

使用Apache-poi将表单添加到现有的excel文件中,而不用重写完整的文件

我正在处理Apache poi,并试图添加新的工作表到现有的Excel文件中。 我将这些工作表添加到工作簿对象中,并使用FileOutputStream将工作簿对象写入文件。 FileOutputStream outputStream = null; FileInputStream inputStream = null; HSSFWorkbook workbook = null; int nRows = 5000; int nCols = 100; try { ArrayList<String> names = new ArrayList(); names.add("NewSheet1"); names.add("NewSheet2"); names.add("NewSheet3"); names.add("NewSheet4"); workbook = new HSSFWorkbook(); for (String name : names) { HSSFSheet sheet = workbook.createSheet(name); for (int rowCounter = 0; rowCounter < […]

从apache poi读取XLSB

我读过它在多个SO问题上声明,Apache POI 3.16-beta3具有对xlsb文件的只读支持。 我正在使用poi 3.17,找不到任何文档或此function的示例。 我能find的最好的例子是仅通过XSSFBEventBasedExcelExtractor提取原始文本,但这似乎是相当老的(2010?),我不确定这是否是引用的function。 是否有任何文档或使用poi来读取xlsb文件的例子,只读parsing在这个问题的评论中提到: 读取XLSB文件Apache POI java.io.CharConversionException的exception,并在一个答案: 从中读取数据。 Tim Allison 在Clojure中的xlsb ?

如何将Redis DB值写入Excel表格?

我正在使用Redis数据库pipe理器,客户端是Jedis。 我已经使用java执行了下面的两个查询 System.out.println("Alphabets:"+Jedis.smembers("SET Name"); System.out.println("Books:"+Jedis.hgetall("key","value"); 输出结果如下, 1.首先打印语句输出 字母:[A,B,C,d,] 2.第二个打印语句输出 书籍:食谱= [Vishnu,JavaBook = Balaguru,Macbook =史蒂夫] 在这里我想用上面的格式将上面的输出值写入单个Excel表格 标题:字母表 没有字母 一个 乙 C d 标题:书籍清单 没有书名。 BOOKAUTHOR 食谱。 毗湿奴 JavaBook。 Balaguru MacBook史蒂夫 Alphabets是Redis SET命令中的值, 用于获取SET值 Book Name是键,BookAuthor是Redis Hash for Second Print语句输出中的值 我看到很多教程从数组中获取值并dynamic地使用Apache poi写入Excel工作表。但是我得到的结果在这里看起来不像一个数组。 每次在结果中获得更多的价值,有没有办法dynamic地写入excel。 我的问题正是如何将打印的输出值传递到excel对象并dynamic地写入excel 请帮助我。 感谢您的帮助提前。

了解ZipSecureFile.setMinInflateRatio(双比例)

我正在使用这个函数调用,因为当我读取一个可信的文件时,导致zipbomb错误。 ZipSecureFile.setMinInflateRatio(双比例) FileInputStream file = new FileInputStream("/file/path/report.xlsx"); ZipSecureFile.setMinInflateRatio(-1.0d); XSSFWorkbook wb = new XSSFWorkbook(file); 我想了解它是如何工作的? 我能find的唯一来源是https://poi.apache.org/apidocs/org/apache/poi/openxml4j/util/ZipSecureFile.html 但是,由于我对这个概念还不熟悉,因此无法获得清晰的画面。 有什么区别 ZipSecureFile.setMinInflateRatio(-1.0d); VS ZipSecureFile.setMinInflateRatio(0.009); VS ZipSecureFile.setMinInflateRatio(0);

使用来自json数组的Apache POI编写Excel工作表

我试图拉5块JSON数据,并将它们写入Excel表。 我将数据转换为jsonarray,然后使用POI写入excel。 出于某种原因,该程序目前只将第五行数据写入第一行,而对其他行不做任何处理。 它应该循环遍历所有5,并把它们对应的行。 有任何想法吗? private void sendPost() { int rowNumber = 1; while (rowNumber < 5 ) { try { String id = censusIdValue(rowNumber); String url = "https://www.broadbandmap.gov/broadbandmap/analyze/jun2014/summary/population/censusplace/ids/" + URLEncoder.encode(id, "UTF-8") + "?format=json"; HttpClient client = HttpClientBuilder.create().build(); HttpGet httpGet = new HttpGet(url); HttpResponse response = client.execute(httpGet); InputStream is = response.getEntity().getContent(); String result = getStringFromInputStream(is); […]

使用Apache POI获取大型Excel文件的Excel表名

我有以下代码,我用来获取Excel文件(.xlsx)的工作表名称 XSSFWorkbook workBookXlsx = new XSSFWorkbook(new FileInputStream(pathToFile)); ArrayList<String> sheetNames = new ArrayList<>(); int numberOfSheets = workBookXlsx.getNumberOfSheets(); for (int i = 0; i < numberOfSheets; i++) { sheetNames.add(workBookXlsx.getSheetAt(i).getSheetName()); } workBookXlsx = null; 我在上面的代码中遇到的问题是需要大量的内存(〜700MB)和很长的时间(5-6s)才能为9MB大小的文件创buildXSSFWorkbook 。 即使将workBookXlsx设置为null也不会释放javaw所占用的内存(我知道gc可能会或可能不会被调用,JVM将不会释放内存,因为我已经将variables设置为null) 我确实经历了Workbook , XSSFWorkbook和我所了解的文档,没有任何方法可以帮助我获得低内存印记的表名。 我发现的一个解决scheme是手动解压缩.xlsx文件并读取.\xl\woorkbook.xml以获取表名和r:id 是否有一个API获取.xlsx文件中没有大内存印记的表名称?