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日

相关文章

  • c#源码的执行过程详解

    c#源码的执行过程详解 1. 源代码编译过程 C#是一种基于CLR(公共语言运行时)的编程语言,它的源代码编译过程分为两个阶段:编译阶段和运行时阶段。 1.1 编译阶段 在C#中,源代码必须先被编译成微软中间语言(MSIL)或CIL(公共中间语言)代码。MSIL代码是CLR的执行代码,它不是本地机器代码,而是被CLR解释执行的代码。因此,编译后的代码可以在任…

    C# 2023年6月1日
    00
  • Java,C#使用二进制序列化、反序列化操作数据

    Java、C#使用二进制序列化、反序列化操作数据 在Java和C#中,我们可以使用二进制序列化和反序列化来存储和读取对象数据。二进制序列化就是将对象转化为二进制字节流的过程,反序列化则是将二进制字节流转化为对象的过程。在网络传输或者本地存储中,使用二进制序列化和反序列化可以方便的进行数据传输和存储。 Java操作示例 序列化 使用Java中的ObjectOu…

    C# 2023年6月6日
    00
  • 关于C#结构体 你需要知道的

    关于C#结构体 你需要知道的 在C#中,结构体是一种轻量级的数据类型,它是一种值类型,而不是引用类型。结构体可以包含字段、方法、属性、构造函数和操作符等成员。 为什么要使用结构体 使用结构体可以提高程序的性能和效率。因为结构体是值类型,而值类型是直接存储在栈上的,这样就避免了装箱和拆箱带来的性能损失。另外,结构体通常不需要被垃圾回收机制处理,所以也减少了内存…

    C# 2023年5月31日
    00
  • 利用C#实现进程管理器

    利用C#实现进程管理器 概述 进程管理器是一款常见的系统工具,用于查看当前系统正在运行的进程,以及进行操作,例如结束进程,查看进程详细信息等等。本文将利用C#语言,实现一个进程管理器。 实现步骤 获取系统中所有的进程 利用.NET Framework提供的System.Diagnostics命名空间,可以很方便地获取当前系统中正在运行的进程。可以使用Proc…

    C# 2023年6月6日
    00
  • vb.net读写文件代码

    当我们使用vb.net编写程序时,经常需要读写文件,下面将介绍vb.net常用的文件读写方法。 读文件 使用StreamReader类 Dim path As String = "C:\test.txt" Using sr As New StreamReader(path) While Not sr.EndOfStream Dim lin…

    C# 2023年5月31日
    00
  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    让我们来详细讲解一下“浅谈AjaxPro.dll,asp.net 前台js调用后台方法”的完整攻略。 什么是AjaxPro.dll AjaxPro.dll 是一个开源的 asp.net AJAX 库,可以帮助我们轻松地实现前台 js 和后台方法的调用,简化了前后台的交互。它特别适用于需要频繁异步交互、需要处理大量数据量的 web 应用程序。 AjaxPro.…

    C# 2023年6月3日
    00
  • 在.NET Core使用 HttpClient 的正确方式

    前言 HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类,用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法,如 GET、POST、PUT 和 DELETE,可以很容易地构造和发送 HTTP 请求,并处理响应数据。它是我们比较常用的官方HTTP请求组件,那么你们都正确…

    C# 2023年4月18日
    00
  • 深入反射生成数组的详解

    深入反射生成数组的详解 本文将详细介绍如何使用反射生成数组。反射是 Java 中非常有用的一个特性,可以在运行时获取和操作类的信息。数组作为 Java 中最基本的数据结构之一,对于开发人员来说也是非常重要的。通过反射生成数组的方式可以提高代码的灵活性和可重用性。 获取 Class 对象 在使用反射生成数组之前,需要先获取 Class 对象。可以通过多种方式获…

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