1. 程式人生 > >jxl讀取excel中Date型別

jxl讀取excel中Date型別

關鍵問題:

        1.使用DateCell型別讀取cell

        2.讀取出來的時間可能需要修改時區

  • 讀取Excel中的日期

           

          如圖,讀取K列1行資料

                    程式碼如下:
		Cell cell;
		DateCell dc;
		String str = "";
		Date date;
		SimpleDateFormat SF_date = new SimpleDateFormat("yyyy-M-d");
		SimpleDateFormat SF_time = new SimpleDateFormat("HH:mm:ss");
		
		cell = sheet.getCell(10,0);
	
		dc = (DateCell)cell;
		date = dc.getDate();
		str = SF_date.format(date);
		System.out.println(str);
		str = SF_time.format(date);
		System.out.println(str);

            輸出結果如下:

                                                                                   可以看出,日期的格式是正確的,但是數值不正確,恰好比實際的時間多出了8個小時。修正的方法是新增修改時區的程式碼。

            幾點說明:

                         1.excel中時間型別的cell需要用datecell讀取,將cell強制轉為datecell型別後,用datecell的getDate方法得到date型別的資料。

                          2.使用simpleDateFormat來指定日期的格式,程式碼如上。

                          3.用到的幾個包:

                                     import java.text.SimpleDateFormat;
                                     import java.util.Date;

                                     import jxl.Cell;

                                     import jxl.DateCell;

  • 修改時區

                         修改時區,需要修改程式碼為:
		Cell cell;
		DateCell dc;
		String str = "";
		Date date;
		SimpleDateFormat SF_date = new SimpleDateFormat("yyyy-M-d");
		SimpleDateFormat SF_time = new SimpleDateFormat("HH:mm:ss");
		TimeZone zone = TimeZone.getTimeZone("GMT");
		
		cell = sheet.getCell(X_Axi,0);
		dc = (DateCell)cell;
		date = dc.getDate();
		SF_date.setTimeZone(zone);
		SF_time.setTimeZone(zone);
		str = SF_date.format(date);
		System.out.println(str);
		str = SF_time.format(date);
		System.out.println(str);
                        輸出結果為: