Tag: xssf

Apache的POI。 XSSF。 工作簿

我已经与XLS合作,但今天我正在尝试新的 – xlsx。 对于XLS,我只需要一个库,与XLSX(四个库)不同。 另外我得到整个包错误。 为什么发生这种情况? 主要: public class Start { public static void main(String[] args) { ReaderXls read = new ReaderXls(); List<List<String>> listAsu = new ArrayList<List<String>>(read.ReaderXls("Sprav_oborudovania",0, 10, 30)); System.out.println(listAsu); } } 代码: package workhere; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFWorkbook; […]

Excell细胞样式问题

我使用下面的代码从XLSX文件中获取date值。 这对于一些xlsx文件来说工作得非常好。 但它没有给出确切的date格式,这是在xlsx文件。 这个问题是针对某个文件的。 例如; 我有这样的date21/01/2016 (dd/mm/yyyy)但是在阅读之后,它给出date为01/21/16(mm/dd/yy) 有没有其他的方式来获得cellstyle? 是xlsx文件的问题? String dateFmt = cell.getCellStyle().getDataFormatString(); if (DateUtil.isCellDateFormatted(cell)) { double val = cell.getNumericCellValue(); Date date = DateUtil.getJavaDate(val); String dateFmt = cell.getCellStyle().getDataFormatString(); System.out.println("dateFmt "+dateFmt); value = new CellDateFormatter(dateFmt).format(date); System.out.println("Date "+value); }

在Excel中显示date表单xlsx在Java中

我将date保存为Excel表格(xlsx)中的一个单元格。 虽然它正在向我展示像2013年6月174日 守则是 String ret=""; if(c.getCellType()==Cell.CELL_TYPE_NUMERIC) { if(col==0) { ret=new java.text.DecimalFormat("0").format(c.getNumericCellValue()); } else if(col==8) { if(HSSFDateUtil.isCellDateFormatted(c)) { DateFormat df=new SimpleDateFormat("DD-MMM-YYYY"); ret=df.format(c.getDateCellValue()); } } else { ret=""+c.getNumericCellValue(); } } else if(c.getCellType()==Cell.CELL_TYPE_STRING) { ret=""+c.getStringCellValue(); } return ret; 请帮助我。 提前致谢。

NoClassDefFoundError:UnsupportedFileFormatException使用java工作与Excel表

我正在写一个Java程序,它从.xlsx文件读取并以.csv格式输出。 这是我的代码: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; public class xlsxToCsv { public static void main(String[] args) { long startTime = System.currentTimeMillis(); File inputFile = new File("C:\\inputFile.xlsx"); File outputFile = new […]

Java POI提供的数据似乎在Office 2007+ XML中

我得到这个错误: org.apache.poi.poifs.filesystem.OfficeXmlFileException:提供的数据似乎在Office 2007+ XML中。 您正在调用处理OLE2 Office文档的POI部分。 您需要调用POI的不同部分来处理这些数据(例如XSSF而不是HSSF) 我读扔Google,我发现我需要使用XSSF而不是HSSF,因为我的Excel文件是xlsx,但正如你在我的maven看到的,我已经使用xlsx。 请问我哪里错了? <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.13-beta1</version> </dependency> 这个例外的代码是: POIFSFileSystem fs; fs = new POIFSFileSystem(new FileInputStream(getFilePath())); 我的新代码 public void getBColum() { try { OPCPackage fs; fs = new OPCPackage.open(new File(getFilePath())); XSSFWorkbook wb = new XSSFWorkbook(fs); XSSFSheet sheet = wb.getSheet("Master column name – Used Car"); XSSFRow row; CellReference cr = […]

有效的方法(使用apache POI)读取XLSX,replace第一行并写入结果?

看来最好的select是使用XSSF和SAX(Event API),但是文档并不是那么好,我找不到一个简单的例子来满足我的需求: 我需要读取一个XLSX文件,读取第一行和第一个单元格,然后replace那里的文本(如标题:TODO),并写入最终文件(标题:示例)。 这在内存使用方面必须非常有效。 我不介意速度性能,只是内存使用情况。 目前使用apache poi 3.8

使用XSSF加载一个空的.xlsx文件需要20秒。 为什么?

我正在使用以下行来打开一个空的 Excel 2007文档: OPCPackage opcPackage = OPCPackage.openOrCreate(file) wb = new XSSFWorkbook(opcPackage); 有趣的是,这只需要20秒。 为什么? 其他人则抱怨XSSF,因为加载一个巨大的文件太慢了。 但对我来说,这只是一个空文件,应该在1秒内完成!

如何在apache poi XSSF usermodel中使用setShapeType画线

我正在更新代码使用3.8 poi,所以我将代码从HSSF更改为XSSF。 我已经在HSSF setShapeType为OBJECT_TYPE_LINE,如何更改XSSF usermodel的setShapeType。 我需要使用XSSF画一条线。 这是我的代码, XSSFDrawing patriarch= (XSSFDrawing) sheet3.createDrawingPatriarch(); XSSFClientAnchor regionr = patriarch.createAnchor(0, 0, 1, 1, (short)6, 12, (short)8.95, 12); XSSFSimpleShape region1Shapevr = patriarch.createSimpleShape(regionr); region1Shapevr.setShapeType(ShapeTypes.LINE); 谢谢

XLSX到CSV内存不足错误

我发现很多解决scheme如何使用Java将XLSX转换为CSV文件,所有解决scheme都使用: XSSFWorkbook 。 我面临的问题是,这个stream可能是有太多的数据。 我只是不明白为什么,这个文件只有4MB。 码: // For storing data into CSV files StringBuffer data = new StringBuffer(); try { FileOutputStream fos = new FileOutputStream(outputFile); System.out.println("Getting input stream."); // Get the workbook object for XLS file XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(inputFile)); System.out.println(" – Done"); // Get first sheet from the workbook XSSFSheet sheet = […]

尝试查找应用于文本的字体时,NPOI API调用中的空引用

我有这个例子: IRichTextString richText = cell.RichStringCellValue; for (int index = 0; index < richText.String.Length; index++) { short fontId = richText.GetFontAtIndex(index); … } 当第一次调用GetFontAtIndex(index = 0)时,我得到的对象引用没有设置为对象的一个​​实例 : NPOI.XSSF.UserModel.XSSFRichTextString.ToCTFont(CT_RPrElt pr)at NPOI.XSSF.UserModel.XSSFRichTextString.GetFontOfFormattingRun(Int32 index) 该文件具有xlsx扩展。 对于xls这个代码工作正常。 也试过这个,没有运气: for (int i = 0; i < richText.NumFormattingRuns; i++) { int startIdx = richText.GetIndexOfFormattingRun(i); int length = richText.GetLengthOfFormattingRun(i); IFont font = richText.GetFontOfFormattingRun(i); … […]