[.NET Tools] 操作Excel 2007 / 2010的套件 - ExcelPackage & Excel Data Reader
這不是什麼神兵利器,如果你的環境沒有安裝Excel 2007以上的版本,但又要對這些檔案做讀寫的動作,那 ExcelPackage & Excel Data Reader 是你可以考慮使用的套件
Lightweight and fast library written in C# for reading Microsoft Excel files ('97-2007).
Cross-platform:
- Windows with .Net Framework 2
- Windows Mobile with Compact Framework
- Linux, OS X, BSD with Mono 2+
感覺很屌,它可以操作Excel 97~Excel 2007
private void button2_Click(object sender, EventArgs e)
{
FileStream stream = File.Open(Application.StartupPath + @"\Book1.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
DataTable table = result.Tables[0];
table.Rows[1][0] = 1111;
excelReader.Close();
stream.Close();
}
看~它幫我們把Excel的WorkSheet變成Datatable了,不過這個套件好像只能讀取不能寫入,我找不到寫入的方法>.<!!,若有人知道好心的提供一下吧
ExcelPackage provides server-side generation of Excel 2007 spreadsheets.
It is a set of classes and wrappers around the .NET 3.0 System.IO.Packaging API and the new Office Open XML file format. It extracts away the complexity of dealing with the individual XML components making it real easy to create sophisticated spreadsheets on the server.
很可惜,它只能操作Excel 2007版本
private void button1_Click(object sender, EventArgs e)
{
FileInfo file = new FileInfo(Application.StartupPath + @"\Book1.xlsx");
using (ExcelPackage package = new ExcelPackage(file))
{
foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
{
Debug.WriteLine(worksheet.Name);
if (worksheet.Name == "ID")
worksheet.Cell(1, 2).Value = "測試寫入";
for (int i = 1; i < 10; i++)
{
string value = worksheet.Cell(i, 1).Value;
if (!string.IsNullOrEmpty(value))
{
Debug.WriteLine(value);
}
}
}
package.Save();
}
}
ExcelPackage的類別命名方式長得比較像Microsoft.Office.Interop.Excel,對我來講,我可以很快的找到我要的欄位進行讀取及寫入。
ExcelPackage的範例下載:
http://excelpackage.codeplex.com/releases/view/1456
後記:
若要我選一個套件我應該會選擇使用ExcelPackage,因為它很快的便讓我上手,幾乎沒有花到什麼時間,而Excel Data Reader我找了老半天,還不知道怎麼寫資料到EXCEL,光是這點ExcelPackage就應該勝出,最後要提醒一下,若是要完整的操作Excel,應該還是要用Microsoft.Office.Interop.Excel.dll(請參考[C# .Net] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全,[VB .NET] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全
),今天介紹的這兩個元件只能針對Excel做簡單的處理。
延伸閱讀:
[Office][C#] NPOI、OpenXML SDK、OpenOffice.org SDK 寫入資料到 EXCEL 檔案
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET