web-dev-qa-db-ja.com

C#を使用してxlsファイルをxlsxファイルに変換する方法

Excelファイルからデータを読み取るアプリケーションを開発していましたが、それを開こうとすると、ソースファイルがxls formatで保存されている場合に例外がスローされました(開くときにファイルに破損したデータエラーが含まれています) OpenXMLを使用したExcelシート)。実際、このファイルをxlsx形式で保存すると、問題なく動作します。この問題の解決を手伝ってください。

10
Hamzatovic

NuGet から入手できる無料のSpire.XLS dllを使用します。

サンプル:

Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xls");
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);
6
j1rjacob

XLSファイルを確実に読み取るには、Microsoft Excelファイルを読み取るためのC#で記述された軽量で高速なライブラリである ExcelDataReader を使用できます。 Excelのバージョン2.0(1987年にリリース!)までのExcelファイルのインポートをサポートしています。

あるいは、 Zamzar のようなファイル変換APIを使用することもできます。このサービスは10年以上前からあり、ファイル変換のためのシンプルなREST APIを提供します-XLSからXLSXへの変換をサポートします。C#で使用でき、次のような追加機能がありますAmazon S3、FTPサーバーなどとの間でファイルをインポートおよびエクスポートします。

完全な開示:私はZamzar APIの主要開発者です。

4
Chris Whyley

OpenXMLでxlsファイルを読み取ることはできません。

Microsoftのソリューションは、Office Interopでxlsファイルを読み取り(ただし、サーバーでのInteropの使用は推奨されていません)、InteropからOpenXMLにデータを段階的に転送します。

別の解決策は、 EasyXLS のようなExcelライブラリを使用して、これら2つのExcelファイル形式間で変換することです。

ExcelDocument workbook = new ExcelDocument();
workbook.easy_LoadXLSFile("Excel.xls");
workbook.easy_WriteXLSXFile("Excel.xlsx");

xlsをxlsxに変換する の詳細を確認してください。

なぜファイルを変換する必要があるのか​​、なぜOpenXMLとは異なるテクノロジーを使用して、単にxlsファイルを読み取らないのかはよくわかりません。

2
alex.pulver

XLSは古いExcelファイル形式です。 XSLXは、OpenXMLとして保存される新しいフォーマットです。 XSLXは、実際にはさまざまなコンポーネントがファイルとして格納されているZipファイルです。ファイルの名前を変更して新しい形式にすることはできません。 XSLXでファイルを保存するには、ファイルをExcel 2010+形式で保存する必要があります。

Excelの相互運用機能を使用している場合は、SaveAsメソッドのオプションです

詳細については、関数を確認してください:_ Workbook.SaveAs Method

およびプロパティ:FileFormat:

Optional Object.
The file format to use when you save the file. For a list of valid choices, 
see the FileFormat property. For an existing file, the default format is the 
last file format specified; for a new file, the default is the format of the 
version of Excel being used.

ここにmsdn情報: https://msdn.Microsoft.com/en-us/library/Microsoft.office.interop.Excel._workbook.saveas(v = office.11​​).aspx

1
Ori a