.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相互運用がターゲットで機能しないと仮定していますか?
[〜#〜] npoi [〜#〜] をお勧めします。 NPOIは[〜#〜] free [〜#〜]であり、.XLSファイルでのみ動作します。とても助かりました。
詳細:NPOIを使用する場合、.XLSファイルを操作するためにMicrosoft Officeをマシンにインストールする必要はありません。
これらのブログ投稿を確認してください。
C#でのExcelスプレッドシート.XLSおよび.XLSXの作成
NPOI with Excel Table and dynamic Chart
[更新]
NPOI 2.0は、XLSXおよびDOCXのサポートを追加しました。
詳細については、こちらをご覧ください。
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で動作するはずです。
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")