2008-12-19 39 views
1

我試圖用新ActiveXObject("Excel.application")到HTML表格轉換到Excel在Javascript。 Bascially我通過表格單元環,並插入在Excel中值到相應的細胞:如何通過javascript(activexobject)創建excel單元格時自定義日期格式?

//for each table cell 
oSheet.Cells(x,y).value = cell.innerText; 

的問題是,當單元處於「DD-MM-YYYY」的日期的格式(例如2008年10月9日),excel會讀作'mm-dd-yyyy'(即2008年10月9日)。我試圖指定NumberFormat像:

oSheet.Cells(x,y).NumberFormat = 'dd-mm-yyyy'; 

但它沒有效果。看來,這不僅會影響如何練成顯示的值,而不是解析。我唯一的解決方案現在是交換,例如日期:

var txt = cell.innerText; 
if(/^(\d\d)-(\d\d)-\d\d\d\d$/.test(txt)) txt = txt.replace(/^(\d\d)-(\d\d)/,'$2-$1'); 

但我擔心,這不是一般的和不同的充機設置將這次失敗。

有沒有辦法具體怎麼excel 解析的輸入值?

+0

瓦at是PC的Windows語言環境? – Fionnuala 2008-12-19 10:59:58

回答

0

在VBScript中,我們使用

If IsDate (Cell.Value) Then 
     Cell.Value = DateValue (Cell.Value) 
    End If 

也許,在Java腳本也需要用同樣的方式玩到解決這個問題。

0

您可以通過使用其本地「串行」的日期格式輸入數據避免Excel的日期解析。例如'08年12月22日'是39804作爲Excel系列日期。 (有關這些很好的解釋見here)像之前

然後格式的單元格。

0
  1. 確定文化中性的日期格式練成什麼支持

  2. 使用JavaScript解析您的日期字符串和輸出在適當的格式

我不知道是什麼格式的Excel支持,但你想要像.net's round trip or sortable formats這樣的東西,它總是被一致地閱讀。

#2,如果你可以信任javascript來構建一個合適的日期從你餵它的任何字符串,那很好。如果你不確定,你可以看看像datejs這樣的圖書館,你可以更具體地瞭解你想要發生的事情。

-1

我試過你的代碼,但在過程的結束,我重新申請格式包含日期列。無論您使用哪種本地語言進行配置,它都能正常工作。

是我的Excel對象定義爲 '模板',只要我得到了它的數據填充,我申請(只是舉例):

template.ActiveSheet.Range("D10:F99").NumberFormat = "dd/MMM/yyyy;@"; 

問候

+0

您的答案是關於顯示這些值,而問題是如何告訴Excel以不同的方式解析值。 – 2012-12-08 17:03:52

0

而不是

oSheet.Cells(x,y).NumberFormat = 'dd-mm-yyyy'; 

一套這樣的:

oSheet.Cells(x,y).NumberFormat = 14; 
相關問題