1.OleDb方式:
- 使用.NET Framework內(nèi)置的System.Data.OleDb命名空間中的類,可以將Excel文件當(dāng)作數(shù)據(jù)庫來讀取數(shù)據(jù)。這種方式適用于較舊版本的Excel文件(.xls格式,即Excel 2003及更早版本)。
using System.Data.OleDb;
// 創(chuàng)建連接字符串
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path_to_your_file.xls;Extended Properties='Excel 8.0;HDR=YES;'";
// 創(chuàng)建OleDbConnection對象
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
// 創(chuàng)建SQL查詢語句
string query = "SELECT * FROM [Sheet1$]"; // Sheet1是你要讀取的工作表名稱
// 創(chuàng)建一個OleDbCommand對象并執(zhí)行查詢
using (var command = new OleDbCommand(query, connection))
{
using (var adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 現(xiàn)在dataTable包含了從Excel文件中讀取的數(shù)據(jù)
}
}
}
2.COM組件方式:
- 利用Office Interop庫(如Microsoft.Office.Interop.Excel),可以直接調(diào)用Excel應(yīng)用程序的對象模型進行操作。這種方法允許對Excel進行更豐富的控制,包括讀寫數(shù)據(jù)、樣式設(shè)置等,但需要在運行環(huán)境安裝有完整版的Microsoft Office。
using Microsoft.Office.Interop.Excel;
// 創(chuàng)建Excel應(yīng)用實例
Application excelApp = new Application();
Workbook workbook = excelApp.Workbooks.Open(@"path_to_your_file.xlsx");
Worksheet worksheet = workbook.Sheets["Sheet1"];
// 訪問單元格數(shù)據(jù)
Range range = worksheet.Cells[1, 1]; // 獲取第一行第一列單元格
string value = range.Value2.ToString();
// 寫入數(shù)據(jù)
range.Value2 = "New Value";
// 關(guān)閉工作簿和應(yīng)用
workbook.Close(SaveChanges: true);
excelApp.Quit();
3.第三方庫NPOI:文章來源:http://www.zghlxwxcb.cn/news/detail-841144.html
- NPOI是一個開源的.NET庫,它不依賴于Office環(huán)境,可以讀寫不同版本的Excel文件,包括.xls和.xlsx格式。使用NPOI可以在服務(wù)器環(huán)境下無Office軟件的情況下處理Excel文件。
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
// 根據(jù)文件格式創(chuàng)建Workbook對象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); // .xls格式
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); // .xlsx格式
// 創(chuàng)建一個新的工作表
ISheet sheet = hssfWorkbook.CreateSheet("Sheet1");
// 在工作表中添加數(shù)據(jù)
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();
總結(jié):文章來源地址http://www.zghlxwxcb.cn/news/detail-841144.html
- 每種方法都有其適用場景和限制,OleDb適合簡單讀取老版Excel文件數(shù)據(jù),COM組件功能全面但要求環(huán)境支持,而NPOI則提供了輕量級且無需安裝Office的解決方案。
到了這里,關(guān)于C#操作Excel文件三種方式詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!