下面是关于“C#读取Excel数据的两种方法实现”的完整攻略。
一、Excel文件读取
1. 使用OLE DB方式读取
前提条件:需要安装Excel程序或Microsoft Access Database Engine软件
使用OLE DB方式读取Excel文件,需要使用System.Data.OleDb
命名空间中的相关类,包括OleDbConnection
、OleDbDataAdapter
和DataTable
等。
下面是一个简单的示例代码,实现了从Excel文件中读取数据,并将数据导入到DataTable中:
using System.Data;
using System.Data.OleDb;
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\test.xlsx\";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
string selectCommand = "SELECT * FROM [Sheet1$]";
DataTable dataTable = new DataTable();
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(selectCommand, connection);
connection.Open();
dataAdapter.Fill(dataTable);
}
2. 使用Open XML SDK方式读取
Open XML SDK是一个用于处理Office文档的开源.NET库。使用Open XML SDK方式读取Excel文件较为简单,只需要使用DocumentFormat.OpenXml.Packaging
命名空间中的SpreadsheetDocument
类,即可读取Excel文件并访问其中的任何单元格。
下面是一个示例代码,实现了从Excel文件中读取数据,并将数据导入到DataTable中:
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
string filePath = "C:\\test.xlsx";
DataTable dataTable = new DataTable();
using (SpreadsheetDocument document = SpreadsheetDocument.Open(filePath, false))
{
WorkbookPart workbookPart = document.WorkbookPart;
IEnumerable<Sheet> sheets = workbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheets.First().Id);
Worksheet worksheet = worksheetPart.Worksheet;
SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart;
SharedStringTable sharedStringTable = sharedStringTablePart.SharedStringTable;
foreach (Row row in worksheet.Descendants<Row>())
{
if (row.RowIndex == 1)
{
foreach (Cell cell in row.Descendants<Cell>())
{
dataTable.Columns.Add(GetValueFromCell(cell, sharedStringTable));
}
}
else
{
DataRow dataRow = dataTable.NewRow();
for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
{
dataRow[i] = GetValueFromCell(row.Descendants<Cell>().ElementAt(i), sharedStringTable);
}
dataTable.Rows.Add(dataRow);
}
}
}
private static string GetValueFromCell(Cell cell, SharedStringTable sharedStringTable)
{
if (cell.DataType == null)
{
return cell.InnerText;
}
else if (cell.DataType == CellValues.SharedString)
{
return sharedStringTable.ElementAt(int.Parse(cell.InnerText)).InnerText;
}
else
{
return cell.InnerText;
}
}
二、文件格式要求
无论是使用OLE DB方式还是Open XML SDK方式读取Excel文件,均需要满足以下格式要求:
- Excel文件需要处于关闭状态;
- Excel文件的第一行需要包含列头信息;
- Excel文件需要保存为
.xlsx
或.xls
格式。
希望上述内容能够对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#读取excel数据的两种方法实现 - Python技术站