52

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

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

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

私は過去にKoograを使用したことがあり、非常に満足していますが、読み取りのみが可能で、書き込みはできないと思います。

図書館をご存知の方は、その名前を教えてください。

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

4

3 に答える 3

63

NPOIをお勧めします。NPOIは無料で、.XLSファイルでのみ機能します。それは私を大いに助けてくれました。

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

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

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

Excelテーブルと動的チャートを使用したNPOI

[アップデート]

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

あなたはここでそれについてもっと読むことができます:

NPOI2.0シリーズの投稿が予定されています

于 2011-05-02T14:26:43.940 に答える
10

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には上位バージョンしかない場合でも、Excel2003で動作するはずです。

于 2011-05-02T01:36:52.883 に答える
0

読み取り/書き込みExcelファイル用のExcelJetcell.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")
于 2011-05-04T09:38:35.123 に答える