1、第一种 文件流解析Excel
要使用文件流(FileStream)解析Excel文件,你可以结合使用适当的库和组件,如EPPlus、NPOI或ClosedXML。以下是一个基本的示例,演示如何使用文件流解析Excel文件:
using System.IO; using OfficeOpenXml; public void ParseExcelUsingFileStream(string filePath) { using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var excelPackage = new ExcelPackage(fileStream)) { // 获取第一个工作表 var worksheet = excelPackage.Workbook.Worksheets[0]; // 遍历工作表的行 for (int row = 1; row <= worksheet.Dimension.End.Row; row++) { // 读取单元格中的数据 var cellValue = worksheet.Cells[row, 1].Value; // 处理数据 if (cellValue != null) { // 对读取到的数据进行操作 // ... } } } } }
在上述示例中,使用文件流从指定的Excel文件路径创建一个FileStream对象。然后,将该FileStream对象传递给ExcelPackage以打开Excel文件。
接下来,获取第一个工作表,并遍历每一行。使用worksheet.Cells[row, column]语法我可以读取指定行和列的单元格值。
请确保在使用完FileStream和ExcelPackage后及时释放相关资源。在上面的示例中,我使用了using
语句来自动处理资源的释放。
第二种 DataSet解析excel
要使用DataSet解析Excel文件,你可以借助ADO.NET提供的功能。以下是一个使用DataSet解析Excel文件的示例代码:
using System.Data; using System.Data.OleDb; public DataSet ParseExcelToDataSet(string filePath) { string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (schemaTable == null) { throw new Exception("未找到任何工作表信息"); } var dataTableList = new List<DataTable>(); foreach (DataRow row in schemaTable.Rows) { string tableName = row["TABLE_NAME"].ToString(); OleDbCommand command = new OleDbCommand($"SELECT * FROM [{tableName}]", connection); OleDbDataAdapter adapter = new OleDbDataAdapter(command); DataTable dataTable = new DataTable(tableName); adapter.Fill(dataTable); dataTableList.Add(dataTable); } DataSet dataSet = new DataSet(); dataSet.Tables.AddRange(dataTableList.ToArray()); return dataSet; } }
在上述示例中,首先创建了一个OLE DB连接字符串,指定Excel文件的路径和相关属性。然后,使用这个连接字符串实例化 OleDbConnection 对象。
通过打开连接,使用 GetOleDbSchemaTable 方法获取 Excel 文件中的工作表信息,并返回一个包含这些信息的 DataTable。
接下来,遍历 DataTable 中的每一行,根据表名执行 Select 语句,读取数据到 DataTable 中。
最后,创建一个 DataSet 对象,并将所有的 DataTable 添加到 DataSet 中,然后返回该 DataSet。
注意,使用 DataSet 解析 Excel 文件时,默认情况下只读取第一个数据表的数据。如果 Excel 文件包含多个工作表,并且你希望读取所有工作表的数据,请相应地修改代码。
此外,请确保你的项目引用了适当的 ADO.NET 程序集和使用的 Excel 版本相对应的驱动程序。
最后
这是个不常用的处理方法,了解一下就行了。