1.OleDb方式: 使用.NET Framework內置的System.Data.OleDb命名空間中的類,可以將Excel文件當作資料庫來讀取數據。這種方式適用於較舊版本的Excel文件(.xls格式,即Excel 2003及更早版本)。 using System.Data.OleDb; // ...
1.OleDb方式:
- 使用.NET Framework內置的System.Data.OleDb命名空間中的類,可以將Excel文件當作資料庫來讀取數據。這種方式適用於較舊版本的Excel文件(.xls格式,即Excel 2003及更早版本)。
using System.Data.OleDb;
// 創建連接字元串
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path_to_your_file.xls;Extended Properties='Excel 8.0;HDR=YES;'";
// 創建OleDbConnection對象
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
// 創建SQL查詢語句
string query = "SELECT * FROM [Sheet1$]"; // Sheet1是你要讀取的工作表名稱
// 創建一個OleDbCommand對象並執行查詢
using (var command = new OleDbCommand(query, connection))
{
using (var adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 現在dataTable包含了從Excel文件中讀取的數據
}
}
}
2.COM組件方式:
- 利用Office Interop庫(如Microsoft.Office.Interop.Excel),可以直接調用Excel應用程式的對象模型進行操作。這種方法允許對Excel進行更豐富的控制,包括讀寫數據、樣式設置等,但需要在運行環境安裝有完整版的Microsoft Office。
using Microsoft.Office.Interop.Excel;
// 創建Excel應用實例
Application excelApp = new Application();
Workbook workbook = excelApp.Workbooks.Open(@"path_to_your_file.xlsx");
Worksheet worksheet = workbook.Sheets["Sheet1"];
// 訪問單元格數據
Range range = worksheet.Cells[1, 1]; // 獲取第一行第一列單元格
string value = range.Value2.ToString();
// 寫入數據
range.Value2 = "New Value";
// 關閉工作簿和應用
workbook.Close(SaveChanges: true);
excelApp.Quit();
3.第三方庫NPOI:
- NPOI是一個開源的.NET庫,它不依賴於Office環境,可以讀寫不同版本的Excel文件,包括.xls和.xlsx格式。使用NPOI可以在伺服器環境下無Office軟體的情況下處理Excel文件。
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
// 根據文件格式創建Workbook對象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); // .xls格式
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); // .xlsx格式
// 創建一個新的工作表
ISheet sheet = hssfWorkbook.CreateSheet("Sheet1");
// 在工作表中添加數據
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("Hello, World!");
// 寫入到文件
FileStream fileStream = new FileStream("output.xls", FileMode.Create);
if (fileExtension == ".xls")
hssfWorkbook.Write(fileStream);
else if (fileExtension == ".xlsx")
xssfWorkbook.Write(fileStream);
// 清理資源
fileStream.Close();
hssfWorkbook.Dispose();
總結:
- 每種方法都有其適用場景和限制,OleDb適合簡單讀取老版Excel文件數據,COM組件功能全面但要求環境支持,而NPOI則提供了輕量級且無需安裝Office的解決方案。