C#通过NPOI导入导出数据EXCEL

下面是关于“C#通过NPOI导入导出数据EXCEL”的完整攻略,包含以下几个部分:

  1. NPOI简介
  2. 导出Excel
  3. 导入Excel
  4. 示例说明

1. NPOI简介

NPOI是一个开源的.NET库,可以用来读写Microsoft Excel、Word和PowerPoint格式的文件。对于需要在C#中读写Excel文件的开发者来说,NPOI是一个不错的选择。使用NPOI可以极大地简化Excel读写操作。

2. 导出Excel

使用NPOI导出Excel需要做以下几个步骤:

第一步:添加NPOI引用

在Visual Studio中打开解决方案,右键单击“引用”文件夹,选择“管理NuGet程序包”,搜索“NPOI”并安装。完成后会自动在项目中添加对NPOI的引用。

第二步:编写导出代码

首先需要在代码中引入NPOI命名空间:using NPOI.SS.UserModel;

然后编写导出代码,示例如下:

// 创建工作簿
IWorkbook workbook = new XSSFWorkbook();

// 创建工作表
ISheet sheet = workbook.CreateSheet("Sheet1");

// 填充数据
for (int i = 0; i < 10; i++)
{
    IRow row = sheet.CreateRow(i);
    for (int j = 0; j < 5; j++)
    {
        row.CreateCell(j).SetCellValue(i * j);
    }
}

// 导出Excel文件
using (var fileStream = new FileStream("Test.xlsx", FileMode.Create))
{
    workbook.Write(fileStream);
}

第三步:运行导出代码

运行代码后,在程序所在目录下会生成一个名为“Test.xlsx”的Excel文件,文件中会包含填充的数据。

3. 导入Excel

使用NPOI导入Excel需要做以下几个步骤:

第一步:添加NPOI引用

同导出操作一样,在Visual Studio中打开解决方案,右键单击“引用”文件夹,选择“管理NuGet程序包”,搜索“NPOI”并安装。完成后会自动在项目中添加对NPOI的引用。

第二步:编写导入代码

在代码中引入NPOI命名空间:using NPOI.SS.UserModel;

然后编写导入代码,示例如下:

// 读取Excel文件
IWorkbook workbook = null;
using (var fileStream = new FileStream("Test.xlsx", FileMode.Open, FileAccess.Read))
{
    workbook = new XSSFWorkbook(fileStream);
}

// 获取工作表和行列数量
var sheet = workbook.GetSheetAt(0);
int rowCount = sheet.LastRowNum + 1;
int columnCount = sheet.GetRow(0).LastCellNum;

// 读取数据
for (int i = 0; i < rowCount; i++)
{
    var row = sheet.GetRow(i);
    for (int j = 0; j < columnCount; j++)
    {
        Console.Write(row.GetCell(j).NumericCellValue + "\t");
    }
    Console.WriteLine();
}

第三步:运行导入代码

运行代码后,会在控制台输出所有读取到的数据。

4. 示例说明

以下是两个示例说明:

示例1:导出CSV文件

假设需要将数据导出为CSV文件,可以将导出代码修改如下:

// 声明CSV文件头
string[] csvHeaders = new string[] { "ID", "Name", "Age" };

// 创建StringBuilder对象
StringBuilder sb = new StringBuilder();

// 填充CSV文件头
sb.AppendLine(string.Join(",", csvHeaders));

// 填充数据
for (int i = 1; i <= 5; i++)
{
    sb.AppendLine(string.Join(",", i, $"Name{i}", i + 20));
}

// 导出CSV文件
using (var fileStream = new FileStream("Test.csv", FileMode.Create))
{
    byte[] csvBytes = Encoding.UTF8.GetBytes(sb.ToString());
    fileStream.Write(csvBytes, 0, csvBytes.Length);
}

示例2:读取Excel文件并插入数据库

假设需要将导入的Excel文件数据插入到数据库中,可以将导入代码修改如下:

// 连接数据库
using (SqlConnection connection = new SqlConnection("your-connection-string"))
{
    connection.Open();

    // 读取Excel文件
    IWorkbook workbook = null;
    using (var fileStream = new FileStream("Test.xlsx", FileMode.Open, FileAccess.Read))
    {
        workbook = new XSSFWorkbook(fileStream);
    }

    // 获取工作表和行列数量
    var sheet = workbook.GetSheetAt(0);
    int rowCount = sheet.LastRowNum + 1;
    int columnCount = sheet.GetRow(0).LastCellNum;

    // 执行SQL语句插入数据库
    for (int i = 1; i < rowCount; i++)
    {
        var row = sheet.GetRow(i);

        // 生成SQL语句并执行
        string sql = $"INSERT INTO [Person] (Name, Age) VALUES ('{row.GetCell(0).StringCellValue}', {row.GetCell(1).NumericCellValue})";
        using (SqlCommand command = new SqlCommand(sql, connection))
        {
            command.ExecuteNonQuery();
        }
    }
}

这样就可以将Excel文件中的数据插入到数据库中了。

以上就是关于“C#通过NPOI导入导出数据EXCEL”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#通过NPOI导入导出数据EXCEL - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 深入Unix时间戳与C# DateTime时间类型互换的详解

    下面我将详细讲解“深入Unix时间戳与C# DateTime时间类型互换的详解”这一主题。 1. Unix时间戳 Unix时间戳是记录时间的一种方式,它指的是从1970年1月1日00:00:00以来经过的秒数。在Unix系统中,时间戳被广泛使用,它只表示时间大小,并不涉及时区等信息。 1.1 将Unix时间戳转换为C# DateTime类型 在C#中,我们可…

    C# 2023年6月1日
    00
  • C# 透明窗体制作实现方法比较分析

    C#中透明窗体的制作实现方法比较有不同的方式,本攻略将分别介绍三种用于制作透明窗体的方法,并分析比较它们的优缺点。 方式一:使用 Form 的 Opacity 属性 使用该方法,制作出的透明窗体是基于整个窗体的透明度来实现的,可使用 Form 的 Opacity 属性来设置窗体的透明程度,取值范围是0-1之间。 private void Form1_Load…

    C# 2023年6月6日
    00
  • C#中的分布式ID生成组件IDGen介绍并给出示例代码

    C#中的IDGen是一个C#实现的Twitter Snowflake算法的ID生成器,可以生成全局唯一的ID,支持高并发场景下的ID生成。在本篇文章中,我们将介绍IDGen的使用方法并提供相关的C#示例代码。 IDGen的介绍 IDGen是一款开源的分布式唯一ID生成器,支持多种ID生成算法,并且可以在高并发场景下快速生成全局唯一的ID。目前支持的ID生成算…

    C# 2023年4月22日
    00
  • C# 常用协议实现模版及FixedSizeReceiveFilter示例(SuperSocket入门)

    C# 常用协议实现模版及FixedSizeReceiveFilter示例(SuperSocket入门) 简介 SuperSocket是一款开源的基于.NET平台的高性能Socket服务器框架,支持多种协议(如TCP、UDP、WebSocket等),并提供了基于协议的使用模板,便于快速开发网络应用程序。 本文将介绍使用SuperSocket实现通信协议的方法,…

    C# 2023年6月1日
    00
  • C#创建Windows服务与服务的安装、卸载

    下面将为你详细讲解“C#创建Windows服务与服务的安装、卸载”的完整攻略。 1. 创建 Windows 服务 1.1 使用 Visual Studio 创建服务项目 打开 Visual Studio,选择“文件”-“新建”-“项目”,在“新建项目”窗口中选择“Windows 服务”项目模板,点击“确定”按钮创建项目。 1.2 设计服务程序 服务程序类必须…

    C# 2023年6月3日
    00
  • Asp.net 连接MySQL的实现代码[]

    下面是详细讲解”Asp.net 连接MySQL的实现代码[]”的完整攻略。 简介 在Asp.net网站中,连接MySQL数据库是常见需求。下面将分享Asp.net连接MySQL数据库的实现代码,本攻略将涵盖实现代码的示例,包括连接MySQL数据库和执行SQL语句。 连接MySQL数据库的实现代码 安装MySQL驱动 在Asp.net网站中,连接MySQL数据…

    C# 2023年5月31日
    00
  • ASP.NET 程序员都非常有用的85个工具

    ASP.NET程序员都非常有用的85个工具 作为ASP.NET程序员,我们需要使用各种工具来提高我们的工作效率和代码质量。在本文中,我们将介绍85个非常有用的ASP.NET工具,这些工具可以帮助我们更好地开发和维护ASP.NET应用程序。 1. 开发工具 以下是一些非常有用的ASP.NET开发工具: 1.1 Visual Studio Visual Stud…

    C# 2023年5月15日
    00
  • jQuery使用$.ajax进行即时验证实例详解

    让我来详细讲解“jQuery使用$.ajax进行即时验证实例详解”。 标题 首先,我们需要了解一下什么是jQuery以及$.ajax。jQuery是一个快速且简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画等操作。而$.ajax是jQuery中一个重要的函数,用来进行异步请求,可以实现无需刷新页面即可获取/修改数据。 具体步骤 在实现即…

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