
在Visual Studio中读取Excel表格的几种方法包括:使用OLEDB、使用OpenXML SDK、使用第三方库(如EPPlus、NPOI)。 其中,使用OLEDB 是一种常见的方法,因为它能够直接与Excel文件进行交互,读取数据如同读取数据库表格一样方便。使用OLEDB时,需要注意Excel文件格式和适配器的兼容性。下面将详细介绍如何在Visual Studio中读取Excel表格的方法。
一、使用OLEDB读取Excel表格
OLEDB 是一种常见的读取Excel文件的方法,类似于访问数据库。它适用于较小规模的Excel数据读取。
1. 安装和引用必要的库
在Visual Studio中,首先需要确保项目引用了 System.Data 和 System.Data.OleDb 命名空间。若使用.NET Core或.NET 5/6,则需要通过NuGet安装 System.Data.OleDb 包。
dotnet add package System.Data.OleDb
2. 编写读取代码
创建一个C#类,使用以下代码示例读取Excel文件:
using System;
using System.Data;
using System.Data.OleDb;
public class ExcelReader
{
public DataTable ReadExcel(string filePath, string sheetName)
{
string connString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties='Excel 12.0 Xml;HDR=YES;'";
using (OleDbConnection conn = new OleDbConnection(connString))
{
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter($"SELECT * FROM [{sheetName}$]", conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
3. 使用示例
以下代码展示了如何使用上述类读取Excel文件并输出内容:
class Program
{
static void Main(string[] args)
{
ExcelReader reader = new ExcelReader();
DataTable dt = reader.ReadExcel(@"C:pathtoyourfile.xlsx", "Sheet1");
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item} ");
}
Console.WriteLine();
}
}
}
二、使用OpenXML SDK读取Excel表格
OpenXML SDK 是另一种读取Excel文件的方式,它不依赖于Office Interop和OLEDB,特别适用于服务器端应用。
1. 安装OpenXML SDK
通过NuGet安装 DocumentFormat.OpenXml 包:
dotnet add package DocumentFormat.OpenXml
2. 编写读取代码
以下代码示例展示了如何使用OpenXML SDK读取Excel文件:
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System;
using System.Collections.Generic;
using System.Linq;
public class OpenXmlExcelReader
{
public List<List<string>> ReadExcel(string filePath)
{
List<List<string>> rows = new List<List<string>>();
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePath, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
Sheet sheet = workbookPart.Workbook.Sheets.Elements<Sheet>().First();
WorksheetPart worksheetPart = (WorksheetPart)(workbookPart.GetPartById(sheet.Id));
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
foreach (Row r in sheetData.Elements<Row>())
{
List<string> row = new List<string>();
foreach (Cell c in r.Elements<Cell>())
{
row.Add(GetCellValue(doc, c));
}
rows.Add(row);
}
}
return rows;
}
private string GetCellValue(SpreadsheetDocument doc, Cell cell)
{
SharedStringTablePart stringTablePart = doc.WorkbookPart.SharedStringTablePart;
if (cell.CellValue == null)
{
return "";
}
string value = cell.CellValue.InnerXml;
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
{
return stringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;
}
return value;
}
}
3. 使用示例
以下代码展示了如何使用上述类读取Excel文件并输出内容:
class Program
{
static void Main(string[] args)
{
OpenXmlExcelReader reader = new OpenXmlExcelReader();
var rows = reader.ReadExcel(@"C:pathtoyourfile.xlsx");
foreach (var row in rows)
{
Console.WriteLine(string.Join(", ", row));
}
}
}
三、使用EPPlus读取Excel表格
EPPlus 是一个强大的第三方库,用于读取和写入Excel文件。它提供了简单的API,非常适合处理复杂的Excel操作。
1. 安装EPPlus
通过NuGet安装 EPPlus 包:
dotnet add package EPPlus
2. 编写读取代码
以下代码示例展示了如何使用EPPlus读取Excel文件:
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
public class EPPlusExcelReader
{
public List<List<string>> ReadExcel(string filePath)
{
List<List<string>> rows = new List<List<string>>();
FileInfo fileInfo = new FileInfo(filePath);
using (ExcelPackage package = new ExcelPackage(fileInfo))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
for (int row = 1; row <= worksheet.Dimension.End.Row; row++)
{
List<string> rowList = new List<string>();
for (int col = 1; col <= worksheet.Dimension.End.Column; col++)
{
rowList.Add(worksheet.Cells[row, col].Text);
}
rows.Add(rowList);
}
}
return rows;
}
}
3. 使用示例
以下代码展示了如何使用上述类读取Excel文件并输出内容:
class Program
{
static void Main(string[] args)
{
EPPlusExcelReader reader = new EPPlusExcelReader();
var rows = reader.ReadExcel(@"C:pathtoyourfile.xlsx");
foreach (var row in rows)
{
Console.WriteLine(string.Join(", ", row));
}
}
}
四、使用NPOI读取Excel表格
NPOI 是另一个流行的第三方库,用于处理Excel文件。它基于Apache POI项目,支持Excel 2003和2007格式。
1. 安装NPOI
通过NuGet安装 NPOI 包:
dotnet add package NPOI
2. 编写读取代码
以下代码示例展示了如何使用NPOI读取Excel文件:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.IO;
public class NPOIExcelReader
{
public List<List<string>> ReadExcel(string filePath)
{
List<List<string>> rows = new List<List<string>>();
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
IWorkbook workbook = new XSSFWorkbook(fs);
ISheet sheet = workbook.GetSheetAt(0);
for (int row = 0; row <= sheet.LastRowNum; row++)
{
IRow rowObj = sheet.GetRow(row);
List<string> rowList = new List<string>();
for (int col = 0; col < rowObj.LastCellNum; col++)
{
rowList.Add(rowObj.GetCell(col).ToString());
}
rows.Add(rowList);
}
}
return rows;
}
}
3. 使用示例
以下代码展示了如何使用上述类读取Excel文件并输出内容:
class Program
{
static void Main(string[] args)
{
NPOIExcelReader reader = new NPOIExcelReader();
var rows = reader.ReadExcel(@"C:pathtoyourfile.xlsx");
foreach (var row in rows)
{
Console.WriteLine(string.Join(", ", row));
}
}
}
以上是四种在Visual Studio中读取Excel表格的方法:使用OLEDB、使用OpenXML SDK、使用EPPlus、使用NPOI。每种方法都有其优缺点,可以根据具体需求选择合适的方式进行Excel数据的读取。
相关问答FAQs:
1. 如何在VS中读取Excel表格?
在Visual Studio中,您可以使用C#或VB.NET编程语言来读取Excel表格。您可以使用第三方库,如EPPlus或NPOI,来实现这个功能。这些库提供了一系列的API和方法,可以帮助您打开、读取和解析Excel文件。您可以通过在项目中添加这些库的引用来开始使用它们,并按照库的文档和示例来编写代码。
2. 我应该如何安装和使用EPPlus来读取Excel表格?
安装EPPlus非常简单。您可以通过NuGet包管理器来安装EPPlus。在Visual Studio中,打开项目,右键单击项目名称,选择“管理NuGet程序包”,然后在搜索框中输入“EPPlus”进行搜索。选择EPPlus并点击安装。安装完成后,您可以使用EPPlus提供的API来读取和操作Excel表格。
3. 在Visual Studio中,如何使用NPOI库来读取Excel表格?
要使用NPOI库来读取Excel表格,您需要先将其添加到您的项目中。在Visual Studio中,打开项目,右键单击项目名称,选择“管理NuGet程序包”,然后在搜索框中输入“NPOI”进行搜索。选择NPOI并点击安装。安装完成后,您可以使用NPOI提供的API来读取和解析Excel文件。您可以参考NPOI的文档和示例代码来了解如何使用该库。
文章包含AI辅助创作,作者:Edit2,如若转载,请注明出处:https://docs.pingcode.com/baike/4263581