web-dev-qa-db-ja.com

.xlsファイルの読み取り/書き込みが可能な.NET Excelライブラリ

.xls(.xlsxではない)ファイルを読み書きするExcelライブラリを探しています。

excellibrary を使用していますが、非常にバグが多く、 作成したファイルを開けないようです です。この問題はほぼ1年前から知られており、まだ修正されていません。

誰かが EPPlus を提案した別のスレッドで見ましたが、それは2007/2010 .xlsx形式でのみ機能します。

過去に Koogra を使用しましたが、非常に満足していましたが、読み取りのみが可能で、書き込みはできません。

ライブラリについて知っている場合は、そのライブラリの名前を教えてください。

編集:必要に応じて、組み込みのMicrosoft.Office.Interop.Excelを使用してExcelファイルを作成できますが、マシンにはOffice 2007があり、ターゲットマシンにはOffice 2003しかありません。そのライブラリ:12、14。ターゲットマシンでExcelのバージョンを確認しましたが、11.8169.8172です-組み込みのExcel相互運用がターゲットで機能しないと仮定していますか?

42
Ozzah

[〜#〜] npoi [〜#〜] をお勧めします。 NPOIは[〜#〜] free [〜#〜]であり、.XLSファイルでのみ動作します。とても助かりました。

詳細:NPOIを使用する場合、.XLSファイルを操作するためにMicrosoft Officeをマシンにインストールする必要はありません。

これらのブログ投稿を確認してください。

C#でのExcelスプレッドシート.XLSおよび.XLSXの作成

NPOI with Excel Table and dynamic Chart

[更新]

NPOI 2.0は、XLSXおよびDOCXのサポートを追加しました。

詳細については、こちらをご覧ください。

NPOI 2.0シリーズの投稿予定

52

Excel ODBC接続を使用してExcelの読み取りおよび書き込みができない理由はありますか?たとえば、次のコードを使用して、Excelファイルから行ごとに読み取りますデータベース:

private DataTable LoadExcelData(string fileName)
{
  string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

  OleDbConnection con = new OleDbConnection(Connection);

  OleDbCommand command = new OleDbCommand();

  DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '' ORDER BY LastName, FirstName", con);

  myCommand.Fill(dt);

  Console.WriteLine(dt.Rows.Count);

  return dt;
}

同じ方法でExcelの「データベース」に書き込むことができます。ご覧のとおり、使用するバージョン番号を選択して、Excel 2003を搭載したマシンのExcelバージョンをダウングレードできます。実際、Interopを使用する場合も同様です。下位バージョンを使用することができ、開発用PCには上位バージョンしかなくてもExcel 2003で動作するはずです。

9
IAmTimCorey

Excelファイルの読み取り/書き込み用に Excel Jetcell .NETコンポーネント と呼ばれるサードパーティのツールを検討することができます。

C#サンプル

// Create New Excel Workbook
ExcelWorkbook Wbook = new ExcelWorkbook();
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;

Cells["A1"].Value = "Excel writer example (C#)";
Cells["A1"].Style.Font.Bold = true;
Cells["B1"].Value = "=550 + 5";

// Write Excel XLS file
Wbook.WriteXLS("Excel_net.xls");

VB.NETサンプル

' Create New Excel Workbook
Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells

Cells("A1").Value = "Excel writer example (C#)"
Cells("A1").Style.Font.Bold = True
Cells("B1").Value = "=550 + 5"

' Write Excel XLS file
Wbook.WriteXLS("Excel_net.xls")
0
Bonnie Cornell