2012-06-16 140 views
3

問題是當我運行我的應用程序並有一個網格(包含字符串和日期列)並將其另存爲excel文件時。java to excel date formatting

當我第一次保存它時,一切都格式正確,但是當我第二次再次保存相同的確切網格時,日期格式不見了(這只是一個浮點值,當我右擊並格式化到dateTime對象工作)。當我重新啓動我的應用程序會在第一次重新工作,然後失去了再次格式化

的代碼如下所示:

Calendar calendar = Calendar.getInstance(); 

calendar.setTime((Date)data); 
      Date gmtDate = new Date(((Date) data).getTime() + (calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET))); 

writableCell = new jxl.write.DateTime(sheetColumn, sheetRow, gmtDate, jxl.write.DateTime.GMT); 

cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("m/d/yyyy h:mm"); 

writableCell.setCellFormat(cellFormat); 

sheet.addCell(writableCell); 

我一直在休息指點,一切都是理所應當的(它總是知道這是一個dateTime類型之前進入表),所以我不認爲它是從代碼。

有沒有其他人遇到過這個問題?

+0

您顯示格式的創作,你可以展示你是如何保存文件? –

+0

對不起,遲到的迴應(我已經離開了一天,當它進來)。所以我所做的就是使用JFileChooser將其保存爲.xls,之前的代碼與格式我玩使工作簿jxl.write.WriteableWorkbook工作簿= jxl.Workbook.createWorkbook(文件名); sheet = workbook.createSheet(「Report」,0); 然後afteri做格式我說: workbook.write; workbook.close; – samligo

+0

我試過了,但無法再現您所看到的內容。你能提供一個SSCCE嗎? –

回答

1

試試這個:

cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("MM/dd/yyyy hh:mm"); 
+0

我試過,不幸的是,這給了我相同的結果 – samligo

1

試圖定義一個靜態WritableCellFormat這需要的日期格式的照顧。

// Required classes. 
import java.util.TimeZone; 
import jxl.write.DateFormat; 
import jxl.write.DateTime; 
import jxl.write.WritableCellFormat; 

// Defined once. 
public static final WritableCellFormat DATE_CELL_FRMT; 
static { 
    DateFormat df = new DateFormat("MM/dd/yyyy hh:mm"); 
    df.getDateFormat().setTimeZone(TimeZone.getTimeZone("GMT")) 
    DATE_CELL_FRMT = new WritableCellFormat(df); 
} 

// Usage 
writableCell = new DateTime(sheetColumn, sheetRow, gmtDate, DATE_CELL_FRMT); 
0

看來您的問題與"jExcelApi - cell date format reusing doesn't work"類似。也許,回答這個問題可以幫助你解決問題。

複述答案: 根據FAQ(問題:「我收到錯誤消息‘太多不同的單元格格式’」)格式,不能在不同的紙張,因爲它們不是設計重用被這樣

重用

在你的情況下,代碼可能是這樣的:

WritableCellFormat format = new jxl.write.WritableCellFormat(new jxl.write.DateFormat("m/d/yyyy h:mm")); 
for(java.util.Date date : someDateList){ 
    WritableCell cell = new jxl.write.DateTime(someColumn, someRow, date, format); 
    sheet.addCell(cell); 
}