web-dev-qa-db-ja.com

HTMLからExcelへ:列を数値として扱うようにExcelに指示するにはどうすればよいですか?

ExcelでHTMLを開くときは、次のことを達成する必要があります(Response.contentType="application/vnd.ms-Excel")

  • excelにtdセルの内容を数値と見なすように強制する
  • 後続のユーザー入力数式がこれらのセルで機能するように上記を作成します(スプレッドシートを開いたとき)

これまでのところ、問題のtdセルにstyle="vnd.ms-Excel.numberformat:0.00"を追加することに成功しました。 Excelでセルを右クリックすると、セルの内容が数値として正しく表示されますが、数式が機能しません。

成功した場合、カスタム要件に応じて適切な数式を使用してWeb Excelレポートをユーザーが拡張できるため、この手法は非常に役立ちます。前もって感謝します。

20
Wheelwright

ページにCSSクラスを追加する場合:

.num {
  mso-number-format:General;
}
.date {
  mso-number-format:"Short Date";
}

そして、あなたのTDでそれらのクラスを叩きます、それは機能しますか?

<td class="num">34</td>
<td class="num">17.0</td>
<td class="date">12/17/2008</td> <!-- if you are playing with dates too -->

更新:追加のフォーマットオプション @ Aaronから。

29
scunliffe

Excel形式のリストは次のとおりです。 mso-number-formatを使用したExcelセルのスタイル設定

16
Aaron Digulla

最善の秘訣は、必要なすべての色/(条件付き)形式/数式を使用してExcelスプレッドシートをモックアップすることです。

最小限の行など、できるだけシンプルにしてください。

次に、Excelスプレッドシートを「Xmlスプレッドシートとして」保存します

次に、Xmlを介してスプレッドシートを作成するためのテンプレートがあります。

私は通常、Excelブックから保存された元のXmlのスタイルをクリーンアップします。重複を削除して名前を変更します。

次に、使用しているデータソースを入力するだけです。

コーディングしている環境はわかりませんが、LINQおよびXmlリテラルを使用するVB.NETでは、これは非常に簡単な作業です。

5
BlackMael

css classを使用して追加すると、機能しない場合があります。その場合は、StyleTDを使用してみてください。列をテキストにフォーマットするために行いました。このような

 style="mso-number-format:\@;"

あなたにとってそれは次のようになります

  mso-number-format:General
2
Mayank Pathak

このページの回答をExcel2010で機能させることができませんでした。結局、これを使用しました。

<td x:num>123</td>
1
Andy Castles

更新:Excelのこれらのセルで数式を機能させるには、数値または金額情報を含むtdセルから改行なしスペース(nbsp)を削除する必要もあります。したがって、問題は解決されます。

0
Wheelwright