1

new を使用して Javascript で HTML テーブルを Excel に変換しようとしていますActiveXObject("Excel.application")。基本的に、表のセルをループして、Excel の対応するセルに値を挿入します。

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

問題は、セルが 'dd-mm-yyyy' (例: 10-09-2008) の日付形式の場合、Excel は 'mm-dd-yyyy' (つまり 2008 年 10 月 9 日) として読み取ることです。私は次のように指定しようとしましたNumberFormat:

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

しかし、それは効果がありません。これは、 parse ではなく、Excel が値を表示する方法にのみ影響するようです。私の唯一の解決策は、次のように日付を交換することです。

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

しかし、それは一般的ではなく、別のマシン設定ではこれが失敗するのではないかと心配しています。

入力値を解析する方法を特定する方法はありますか?

4

5 に答える 5

0

ネイティブの「シリアル」日付形式を使用してデータを入力することで、Excel の日付解析を回避できます。たとえば、'22nd Dec 08' は、Excel のシリアル日付として 39804 です。(これらの良い説明については、こちらを参照してください)

次に、前と同じようにセルをフォーマットします。

于 2008-12-22T16:16:55.217 に答える
0

Vbscript では、これを解決するために使用します。

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

たぶん、Javaスクリプトでも同じアプローチで遊ぶ必要があります。

于 2008-12-19T05:08:46.053 に答える
0

それ以外の

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

これを設定します:

oSheet.Cells(x,y).NumberFormat = 14;
于 2011-07-20T20:05:40.070 に答える
0
  1. Excel がサポートするカルチャに依存しない日付形式を特定する

  2. JavaScript を使用して日付文字列を解析し、適切な形式で出力します

Excel がサポートしている形式はわかりませんが、常に一貫して読み取られる.net のラウンドトリップまたはソート可能な形式のようなものが必要です。

#2については、javascriptを信頼して、フィードした文字列から適切な日付を作成できる場合は問題ありません。よくわからない場合は、datejsのようなライブラリを参照してください。そこでは、何をしたいのかをより具体的にすることができます。

于 2010-10-27T17:06:51.583 に答える
-1

私はあなたのコードを試しましたが、プロセスの最後に、日付を含む列にフォーマットを再適用しました。マシンで構成したローカル言語に関係なく、正常に動作します。

'template'として定義されたExcelオブジェクトであるため、データが入力されるとすぐに、次のように適用しました(たとえば)。

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

よろしくお願いします

于 2010-10-29T13:43:35.830 に答える