[C#] Excel 2007シートをプログラムで作成する


Answers

私はちょうどExcelで開くことができるHTMLテーブルを生成しています:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wnioski</title>
<style type="text/css">
<!--
br { mso-data-placement: same-cell; }
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; }
-->
</style>

<table>
<tr style="height:15.0pt">
<td style="mso-number-format: general">474</td>
<td>474</td>

<tr>
<td>data2</td>
<td>data3</td>

<tr>
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td>
<td style="mso-number-format: standard">0.00</td>

<tr>
<td style="mso-number-format: general">line1<br>line2<br>line3</td>
<td></td>

</table>

これは、Wordのシリアル文字のデータソース、OpenOfficeのcalcなどのデータソースとしてもうまく機能します。生成するのは簡単ではありません。

Question

Excel 2007のドキュメントをプログラムで作成しようとしています。 今、私が見つけた2つの方法があります:

現在、ExcelPackageを使用していますが、実際には重大な欠点や問題があります。 あまり複雑なExcelシートを作成する必要はありません(最も複雑なのは、セルタイプを数値またはテキストに明示的に設定する必要があるということです)、次にオプション1を検討していますが、 Excel 2007シートを生成するための他の優れたサポートされた方法はありますか? ボーナスポイントは、ハードドライブに保存する必要なく作成することができます。つまり、それらを生成してストリームに直接出力することができます。

.net 3.0はここの目標です、いいえ3.5良い:(

編集:これまでのおかげで。 XML SDKは確かに3.5のみですが、ロシアのRoulet ... erm ... COM Interopは可能な限り避けたいものです。特に、Excel 2007はやや複雑ですが、文書フォーマットを作成するのが簡単です。 投稿されたさまざまなリンクやヒントを見ていきます。




プライマリ相互運用機能アセンブリ(Office API)を使用して、プログラムによってExcelドキュメントを生成することができます。これらを使用して過度に複雑な処理を実行したくないのですが、それはあなたの要件であるとは言えません。

このアプローチは、メモリ内のドキュメントの生成にも有効です。

ここにいくつかのリソースがあります:




私はSpreadsheetGear for .NETでOpen XML(xlsx)の仕事のほとんどをやっていましたが、それは簡単なことではありません。 私は、Office Open XML SDKまたはSpreadsheetGearや競合他社のような他のサードパーティのライブラリを使用することをお勧めします(競合他社の人を見るにはGoogleの "SpreadsheetGear"だけです)。

SpreadsheetGear for .NETはあなたのニーズを満たすようです:

  • .NET 2.0、.NET 3.0、および.NET 3.5で動作します。
  • IWorkbook.SaveToStreamを使用してストリームに書き込むこと、またはIWorkbook.SaveToMemoryを使用してバイト配列に書き込むことをサポートします。
  • 非常に多くのユーザーをサポートする必要がある場合に、次に求められるようなExcel 97-2003(xls)ワークブックをサポートします。

無料で完全な機能の評価版をダウンロードできます。




生き生きとしたコードスヌープはすべてvbscriptを嫌いですが、シンプルで機能します:

Set myxlapp = CreateObject("Excel.Application")
Set mywb = myxlapp.Workbooks.Add
myxlapp.Visible = true

それをテキストファイルに入れて、最後に ".vbs"を追加してください。