让C# Excel导入导出 支持不同版本Office

让我详细为您讲解“让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的完整攻略了,希望对您有所帮助。

示例说明:

  1. 导入Excel文件的示例:
var data = ReadExcel("test.xlsx");
var isSuccess = ImportData(data, connectionString, "TestTable");
  1. 导出Excel文件的示例:
var data = GetTestData();
var isSuccess = ExportExcel(data, "test.xlsx");

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:让C# Excel导入导出 支持不同版本Office - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • 深入理解C#之接口

    当我们需要定义一个规范或者一个协议,描述某个对象应该具有哪些能力时,可以使用接口。接口可以看做是一种特殊的抽象类,它没有任何实现,只用于描述对象应该有哪些能力。具体来说,一个接口是由一组抽象方法、属性、索引器和事件组成的。可以将接口看做一种契约,实现接口的类型需要履行这个契约,提供指定的能力。 以下是实现接口的基本语法: [public | internal…

    C# 2023年6月7日
    00
  • C#实现XML与实体类之间相互转换的方法(序列化与反序列化)

    首先我们需要明确两个概念:序列化和反序列化。序列化是将对象转换为XML或JSON格式的文本数据,而反序列化则是将XML或JSON格式的文本数据转换为对象。 在C#中,我们可以使用XmlSerializer类来实现XML和实体类之间的序列化和反序列化。以下是详细的步骤: 1. 定义实体类 我们先定义一个Person类来说明这个过程: public class …

    C# 2023年5月31日
    00
  • ASP.Net Core MVC基础系列之服务注册和管道

    ASP.Net Core MVC基础系列之服务注册和管道 在 ASP.Net Core MVC 中,服务注册和管道是非常重要的概念。本攻略将介绍 ASP.Net Core MVC 中的服务注册和管道,以及如何使用它们来构建 Web 应用程序。 服务注册 在 ASP.Net Core MVC 中,服务注册是指将服务添加到应用程序的依赖注入容器中。依赖注入容器是…

    C# 2023年5月17日
    00
  • 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    这个错误提示通常表示程序在加载某个DLL文件时出现了问题,这个DLL文件可能是应用程序的依赖项之一,或者是应用程序本身的一部分。以下是解决这个错误的一些常见步骤: 1. 检查DLL文件的位数 如果应用程序是64位的,那么它需要使用64位的DLL文件。如果应用程序是32位的,那么它需要使用32位的DLL文件。如果你将不同位数的DLL文件混合使用会导致这个错误,…

    C# 2023年5月15日
    00
  • ASP.NET Core应用JWT进行用户认证及Token的刷新方案

    下面我将为您详细讲解如何使用 ASP.NET Core 应用 JWT 进行用户认证及 Token 的刷新方案。 什么是 JWT? JWT (JSON Web Token) 是一个开放标准 (RFC 7519),用于在网络上传输声明 (Claims),通常用于身份认证。JWT 由三部分组成:头部 (Header)、载荷 (Payload) 和签名 (Signa…

    C# 2023年6月3日
    00
  • c#在控制台输出彩色文字的方法

    下面我将详细讲解如何在C#控制台输出彩色文字。 1. 使用系统默认颜色 在C#控制台中,可以使用控制台对象Console的静态方法来输出彩色文字。首先让我们来看一下使用系统默认颜色的方法。 使用Console.ForegroundColor属性设置前景色,即文字颜色,使用Console.BackgroundColor属性设置背景色,然后使用Console.W…

    C# 2023年6月7日
    00
  • asp.net中使用log4net详解

    ASP.NET中使用log4net详解 什么是log4net log4net是Apache的一个开源项目,其目的是为.NET日志输出提供一个高效、灵活且可扩展的框架。log4net提供了丰富的日志记录机制,能够强化应用程序的可维护性和稳定性,将应用程序中各种事件输出到各种目标(文件、数据库、控制台等)。 如何使用log4net 步骤一:在项目中引用log4n…

    C# 2023年5月31日
    00
  • C#调用sql2000存储过程方法小结

    下面就是详细讲解“C#调用sql2000存储过程方法小结”的完整攻略。 前提条件 在开始使用C#调用SQL Server 2000存储过程之前,需要满足以下前提条件: 电脑上已安装SQL Server 2000或更高版本,并正确配置SQL Server的连接信息。 电脑上已安装Visual Studio开发工具,并正确配置了数据库连接信息。 步骤 接下来,我…

    C# 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部