2016-02-08 28 views
1

Im使用jxl將用戶輸入的數據存儲到excel電子表格中。我希望能夠在運行時關閉我的程序,並打開Excel電子表格並查看數據。每當我這樣做時,我都會收到一條消息,指出它的格式與文件擴展名中指定的格式不同。這是我的代碼。程序關閉jxl中的數據損壞

您的代碼需要處理

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

import jxl.*;                  
import jxl.write.*;                
import jxl.Workbook;                
import jxl.read.biff.BiffException;            
import jxl.write.Label;               
import jxl.write.Number;               
import jxl.write.WritableSheet;             
import jxl.write.WritableWorkbook;            
import jxl.write.WriteException;             
import jxl.write.biff.RowsExceededException;          

public class ReadWriteTest              
{ 
    public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException 
    {           
     Scanner scan = new Scanner(System.in); 

     int i = 1; 

     Integer iAlliance = -1; 

     File test = new File("C:\\test.xls"); 

     WritableWorkbook wb = Workbook.createWorkbook(test); 

     while(iAlliance != 0 && i != 5)       
     { 
      WritableSheet sheet = wb.createSheet("Sheet" + i, i); 

      iAlliance = scan.nextInt(); 

      WriteExcel.addNumber(sheet, 0, 0, iAlliance); 

      iAlliance = scan.nextInt(); 

      WriteExcel.addNumber(sheet, 1, 0, iAlliance); 

      i++; 
     } 
     wb.write(); 
     wb.close(); 
    } 
} 

回答

0

「而它的運行關閉我的計劃。」現在,它只是在任何時候被殺死(可能在那個循環中),並且在那之後沒有任何事情發生。 WriteableWorkbook永遠不會得到write()close()調用,並且該文件可能已損壞。

所以看到這個,嘗試在不同的地方添加一些簡單的輸出,比如「到第XXX行」。運行它,關閉它,看看它有多遠。

您可能需要將大部分代碼包裝在try-catch-finally中。該循環位於try內部,catch處理在該鍵盤處關閉那個討厭的人的閃電般的程序,並且finally正確關閉該工作簿文件。

+0

while循環不會拋出異常,所以我不能把它放在try-catch-finally中。錯誤是每當我打開excel程序。 – Praxton

+0

@Praxton(1)你不需要拋出或處理一個異常來利用'finally'塊。 (2)我沒有說錯誤信息來自你的程序。基礎錯誤是由損壞的文件引起的,並且損壞的文件可能是由程序退出的方式引起的。 –