2012-11-18 40 views
1

罐子我已經使用:dom4j poi-3.8.jarpoi-ooxml-3.8.jarpoi-ooxml-schemas-3.8.jarxbean.jar使用java寫入.xlsx。發生BiffViewer錯誤

代碼:

package org.capgemini.ui; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Date; 
import java.util.Enumeration; 
import java.util.Iterator; 
import java.util.Vector; 

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 XSSFWorkBookWriter { 

public void writeWorkBook(Vector table) throws Exception {  

XSSFWorkbook workBook = new XSSFWorkbook(); 
XSSFSheet sheet = workBook.createSheet(); 
table=new Vector(); 
table.add(new String("Howdy")); 
table.add(new java.sql.Date(2012,06,20)); 
table.add(new Double(13.35D)); 
table.add(new String("Fine")); 
table.add(new java.sql.Date(2012,06,20)); 
table.add(new Double(13.38D)); 

Iterator rows=table.iterator(); 
Enumeration rowsOfVector=table.elements(); 
int totalNoOfRows=table.size()/2; 
int currentRow=0; 
while (rows.hasNext() && currentRow<totalNoOfRows){ 
XSSFRow row = sheet.createRow(currentRow++);    
for (int i = 0; i < 3; i++) { 
XSSFCell cell=row.createCell(i); 
Object val=rows.next(); 
if(val instanceof String){ 
cell.setCellValue(val.toString()); 
      } 
else if(val instanceof Date){ 
cell.setCellValue((java.sql.Date)val); 
      } 
else if(val instanceof Double){ 
cell.setCellValue((Double)val); 
} 
} 
} 

FileOutputStream outPutStream = null; 
    try { 
     outPutStream = new FileOutputStream("D:/Try.xlsx"); 
     workBook.write(outPutStream); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (outPutStream != null) { 
      try { 
       outPutStream.flush(); 
       outPutStream.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

public static void main(String[] args) { 
    XSSFWorkBookWriter bookWriter=new XSSFWorkBookWriter(); 
    try { 
     bookWriter.writeWorkBook(new Vector()); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

}

錯誤::

org.apache.poi.hssf.dev.BiffViewer$CommandParseException: Biff viewer needs a filename 
at org.apache.poi.hssf.dev.BiffViewer$CommandArgs.parse(BiffViewer.java:333) 
at org.apache.poi.hssf.dev.BiffViewer.main(BiffViewer.java:386) 

回答

0

BiffViewer是HSSF的一部分,它只適用於舊的.xls文件(基於OLE2)。您使用XSSF生成一個.xlsx文件,這是一種不同的低級格式。

如果你真的想使用BiffViewer(不知道爲什麼,它通常只用於調試,但仍然),那麼你需要將你的XSSF代碼改爲HSSF代碼。否則,如果您確實想要使用XSSF生成.xlsx文件,則無法使用HSSF調試工具。如果您想知道.xlsx文件中的內容,請將其解壓縮(.xlsx是xml文件的zip)並查看XML。

相關問題