让我详细为您讲解“让C# Excel导入导出 支持不同版本Office”的完整攻略。
1. 导入Excel
1.1. 安装相关依赖
首先需要在项目中通过NuGet安装以下两个包:
Install-Package Microsoft.Office.Interop.Excel
Install-Package ExcelDataReader
1.2. 读取Excel文件
读取Excel文件可以使用ExcelDataReader这个包提供的类,示例代码如下:
using ExcelDataReader;
using System.Data;
using System.IO;
//读取Excel文件
public static DataTable ReadExcel(string filePath, string sheetName = null) {
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) {
using (var reader = ExcelReaderFactory.CreateReader(fs)) {
//如果没有指定sheetName,则默认读取第一个sheet
if (string.IsNullOrEmpty(sheetName)) {
reader.Read();
} else {
while (reader.Name != sheetName && reader.Read()) { }
}
return reader.AsDataSet().Tables[0];
}
}
}
1.3. 导入Excel到数据库
读取完Excel文件后,可以将数据批量插入到数据库中,示例代码如下:
using System.Data;
using System.Data.SqlClient;
//导入数据到数据库
public static bool ImportData(DataTable data, string connectionString, string tableName) {
using (var conn = new SqlConnection(connectionString)) {
using (var bulkCopy = new SqlBulkCopy(conn)) {
try {
bulkCopy.DestinationTableName = tableName;
bulkCopy.WriteToServer(data);
return true;
} catch {
return false;
}
}
}
}
2. 导出Excel
2.1. 安装相关依赖
需要在项目中通过NuGet安装以下这个包:
Install-Package EPPlus
2.2. 创建Excel文件
在导出Excel时,可以使用EPPlus这个包提供的类,示例代码如下:
using OfficeOpenXml;
using System.Data;
using System.IO;
//导出Excel文件
public static bool ExportExcel(DataTable data, string filePath, string sheetName = "Sheet1") {
try {
using (var package = new ExcelPackage(new FileInfo(filePath))) {
var worksheet = package.Workbook.Worksheets.Add(sheetName);
worksheet.Cells["A1"].LoadFromDataTable(data, true);
package.Save();
}
return true;
} catch {
return false;
}
}
2.3. 指定文件格式和版本
导出Excel时,可以指定文件格式和版本,示例代码如下:
using OfficeOpenXml;
using System.Data;
using System.IO;
//导出Excel文件
public static bool ExportExcel(DataTable data, string filePath, string sheetName = "Sheet1") {
try {
//根据文件扩展名判断文件格式
var fileExtension = Path.GetExtension(filePath);
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (var package = new ExcelPackage(new FileInfo(filePath))) {
var worksheet = package.Workbook.Worksheets.Add(sheetName);
worksheet.Cells["A1"].LoadFromDataTable(data, true);
switch (fileExtension.ToLower()) {
case ".xlsx":
package.SaveAs(new FileInfo(filePath));
break;
case ".xls"://需要安装Office2007文件格式支持插件
package.SaveAs(new FileInfo(filePath), Excel.XlFileFormat.xlExcel8);
break;
}
}
return true;
} catch {
return false;
}
}
以上就是让C# Excel导入导出支持不同版本Office的完整攻略了,希望对您有所帮助。
示例说明:
- 导入Excel文件的示例:
var data = ReadExcel("test.xlsx");
var isSuccess = ImportData(data, connectionString, "TestTable");
- 导出Excel文件的示例:
var data = GetTestData();
var isSuccess = ExportExcel(data, "test.xlsx");
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:让C# Excel导入导出 支持不同版本Office - Python技术站