0

私は基本的に xlsx ファイルを作成していますが、そのファイルを使用すると以下のようなエラーが発生します。

System.IO.FileFormatException: アーカイブ ファイルのサイズを 0 にすることはできません。

私が試した方法。

string file = "c:\\DoneDone61.xlsx";

using(File.Create(file))
{

}

また、ファイルが破損していると表示されるため、Excel ファイルを手動で開くこともできません。

事前に回答いただきありがとうございます。

4

5 に答える 5

4

「空白」と見なされる Excel ファイルは、データが含まれていないファイルではありません (これが作成中のファイルです)。これは、Excel でドキュメントを手動で作成し、それをメモ帳で開くことで確認できます。実際にデータが内部にあることに気付くでしょう。そのデータは、「Sheet1」、「Sheet2」、および「Sheet3」という名前の 3 つの空のシートに関する情報を格納するために使用されます。また、ファイルを参照するすべてのプログラムが実際に圧縮ファイル (Excel ファイル形式による) であることを認識できるように、いくつかのヘッダー情報があります。ご覧のとおり、かなり空の Excel ファイルでさえ、いくつかのデータが含まれています。

C# を使用して空白の Excel ドキュメントを作成する場合は、2 つの適切なオプションがあります。

  1. ファイルを正しく作成するための Excel ドキュメントの作成を実際に操作できるライブラリを使用します。Microsoft OpenXML SDKExcelPackageなどを調べてください。
  2. 空の Excel ドキュメントを作成し、どこかに保存します。新しい空の Excel ドキュメントを「作成」する場合は、このファイルのコピーを作成するだけです。
于 2012-10-05T08:52:33.033 に答える
1

使用する必要があるのはInterop.Excel名前空間です。これはmsdnからのガイドです

于 2012-10-05T08:51:45.637 に答える
1

これです ...

using(File.Create(filePath))
{
}

... 空のファイルを作成します。読み取り:本当に空 (=> 0 バイト) XLSX スケルトンを持つ空の XLSX ではありません: ZIP コンテナー、ファイル ヘッダー、スタイル定義、....

正確には何を期待していましたか?

編集: 空の XLSX ファイル (「マウスを右クリック > 新規 > 新規 Microsoft Excel」など) を作成する場合は、そのようなテンプレートを使用する必要があります...そしてディスクに書き込みます。

これを実現するには、このテンプレート ファイルをアプリケーションにデプロイしてから、リソースFile.Copy(source, dest)として統合するか、リソース コンテンツをディスクに書き込む必要があります。

于 2012-10-05T08:43:17.023 に答える