C#的Excel导入、导出

下面给您详细讲解C#中的Excel导入和导出的完整攻略。

导入Excel

使用第三方库

要导入Excel文件到C#程序中,常用的做法是使用第三方库。其中比较常用的库有:

  • NPOI:NPOI是C#的开源库,用于按照Microsoft Office的公开标准读写Excel文件。功能强大,支持.xls、.xlsx、.ppt、.pptx、.doc和.docx等Office文件格式。此外,NPOI还支持Word/Excel的图表、图片等功能。

  • EPPlus:EPPlus是C#的开源库,用于按照Microsoft Office的公开标准读写Excel 2007/2010/2013/2016/2019文件(.xlsx、.xlsm)。内部使用OpenXml SDK。使用起来比NPOI更加简单。

下面是使用NPOI读取Excel文件的示例代码:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

static void Main(string[] args)
{
    string filePath = @"C:\example.xlsx";
    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        XSSFSheet sheet = (XSSFSheet)workbook.GetSheet("Sheet1");
        if (sheet != null)
        {
            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                IRow row = sheet.GetRow(i);
                if (row != null)
                {
                    string cell1 = row.GetCell(0) != null ? row.GetCell(0).ToString() : "";
                    string cell2 = row.GetCell(1) != null ? row.GetCell(1).ToString() : "";
                    string cell3 = row.GetCell(2) != null ? row.GetCell(2).ToString() : "";
                    Console.WriteLine($"第{i+1}行数据:{cell1}、{cell2}、{cell3}");
                }
            }
        }
        workbook.Close();
    }
}

上面的代码使用了NPOI的XSSFWorkbook和XSSFSheet类读取Excel文件数据。其中,XSSFWorkbook表示整个Excel工作簿,XSSFSheet表示工作簿中的表格,IRow表示Excel表格中的行,ICell表示Excel行中的单元格。通过代码可以看到,我们可以根据行和列的下标获取Excel表格中的单元格数据,然后进行进一步处理。

如果您使用了EPPlus库,则需要调用其提供的类和方法进行Excel读取。下面是使用EPPlus读取Excel文件的示例代码:

using OfficeOpenXml;
using System.IO;

static void Main(string[] args)
{
    string filePath = @"C:\example.xlsx";
    using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets["Sheet1"];
        if (worksheet != null)
        {
            for (int i = 2; i <= worksheet.Dimension.End.Row; i++)
            {
                string cell1 = worksheet.Cells[i, 1].Value?.ToString() ?? "";
                string cell2 = worksheet.Cells[i, 2].Value?.ToString() ?? "";
                string cell3 = worksheet.Cells[i, 3].Value?.ToString() ?? "";
                Console.WriteLine($"第{i}行数据:{cell1}、{cell2}、{cell3}");
            }
        }
    }
}

可以看到,使用EPPlus读取Excel文件的代码也比较简洁,与上面使用NPOI的代码有一些区别,不过逻辑相同。

使用OleDbDataReader读取Excel文件

除了使用第三方库,我们还可以使用OleDbDataReader读取Excel文件数据。下面是使用OleDbDataReader读取Excel文件数据的示例代码:

using System.Data.OleDb;
using System.IO;

static void Main(string[] args)
{
    string connectionString = $@"Provider=Microsoft.ACE.OLEDB.12.0;
                                 Data Source=C:\example.xlsx;
                                 Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'";
    string commandText = "SELECT * FROM [Sheet1$]";
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        connection.Open();
        using (OleDbCommand command = new OleDbCommand(commandText, connection))
        {
            using (OleDbDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    string cell1 = reader[0] != null ? reader[0].ToString() : "";
                    string cell2 = reader[1] != null ? reader[1].ToString() : "";
                    string cell3 = reader[2] != null ? reader[2].ToString() : "";
                    Console.WriteLine($"第{reader.Depth+1}行数据:{cell1}、{cell2}、{cell3}");
                }
            }
        }
    }
}

上面的代码中,connectionString表示OleDb连接字符串,commandText表示查询表格中的全部数据。我们可以看到,使用OleDbDataReader也可以轻松地读取Excel文件数据。

导出Excel

要将C#程序中的数据导出到Excel文件中,我们一般也会使用第三方库来实现。常用的库包括:

  • NPOI
  • EPPlus
  • ClosedXML:ClosedXML是C#的开源库,用于按照Microsoft Office的公开标准读写Excel文件,支持.xls、.xlsx文件,比NPOI和EPPlus更加易用。

下面是使用NPOI将数据导出到Excel文件的示例代码:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

static void Main(string[] args)
{
    string filePath = @"C:\export.xlsx";
    using (FileStream file = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("Sheet1");
        sheet.CreateRow(0).CreateCell(0).SetCellValue("姓名");
        sheet.GetRow(0).CreateCell(1).SetCellValue("年龄");
        sheet.GetRow(0).CreateCell(2).SetCellValue("性别");
        sheet.CreateRow(1).CreateCell(0).SetCellValue("张三");
        sheet.GetRow(1).CreateCell(1).SetCellValue(18);
        sheet.GetRow(1).CreateCell(2).SetCellValue("男");
        sheet.CreateRow(2).CreateCell(0).SetCellValue("李四");
        sheet.GetRow(2).CreateCell(1).SetCellValue(20);
        sheet.GetRow(2).CreateCell(2).SetCellValue("女");
        workbook.Write(file);
        workbook.Close();
    }
}

上面的代码中,我们使用了NPOI的XSSFWorkbook、XSSFSheet、IRow、ICell等类来创建Excel工作簿、表格、行和单元格,并且给单元格设置了值。最后将Excel工作簿内容写入到文件中。

使用EPPlus导出Excel文件的方法与上面类似,下面是示例代码:

using OfficeOpenXml;
using System.IO;

static void Main(string[] args)
{
    string filePath = @"C:\export.xlsx";
    using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
        worksheet.Cells[1, 1].Value = "姓名";
        worksheet.Cells[1, 2].Value = "年龄";
        worksheet.Cells[1, 3].Value = "性别";
        worksheet.Cells[2, 1].Value = "张三";
        worksheet.Cells[2, 2].Value = 18;
        worksheet.Cells[2, 3].Value = "男";
        worksheet.Cells[3, 1].Value = "李四";
        worksheet.Cells[3, 2].Value = 20;
        worksheet.Cells[3, 3].Value = "女";
        package.Save();
    }
}

使用ClosedXML导出Excel文件的方法也比较简单,下面是示例代码:

using ClosedXML.Excel;
using System.IO;

static void Main(string[] args)
{
    string filePath = @"C:\export.xlsx";
    using (XLWorkbook workbook = new XLWorkbook())
    {
        IXLWorksheet worksheet = workbook.Worksheets.Add("Sheet1");
        worksheet.Cell(1, 1).Value = "姓名";
        worksheet.Cell(1, 2).Value = "年龄";
        worksheet.Cell(1, 3).Value = "性别";
        worksheet.Cell(2, 1).Value = "张三";
        worksheet.Cell(2, 2).Value = 18;
        worksheet.Cell(2, 3).Value = "男";
        worksheet.Cell(3, 1).Value = "李四";
        worksheet.Cell(3, 2).Value = 20;
        worksheet.Cell(3, 3).Value = "女";
        workbook.SaveAs(filePath);
    }
}

以上就是C#中的Excel导入和导出的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#的Excel导入、导出 - Python技术站

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

相关文章

  • asp.net代码中修改web.config节点的具体方法

    修改 ASP.NET 应用程序的 Web.config 文件中的节点,可以通过以下两种方式实现: 方式一:使用 Configuration 对象 首先,在代码中需要使用 System.Configuration 命名空间,然后利用 Configuration 类和 ConfigurationSection 类来访问和修改 Web.config 文件中的节点,…

    C# 2023年5月31日
    00
  • c#判断数据库服务器是否已经启动的方法

    关于“c#判断数据库服务器是否已经启动的方法”,下面是完整的攻略: 1. 方法概述 在C#中,可以通过Ping类判断数据库服务器是否已经启动。Ping类是通过发送 Internet 控制消息协议 (ICMP) Echo 请求和接收 ICMP Echo 回应报文来测试连接的,可以用来测试远程主机是否可达。 2. 方法实现 在此提供一种实现思路:在C#中通过使用…

    C# 2023年6月2日
    00
  • C#基于Socket实现简单聊天室功能

    C#基于Socket实现简单聊天室功能攻略 简介 本攻略旨在介绍如何使用C#语言基于Socket实现一个简单聊天室的功能。在本攻略中,我们将使用Socket API来创建网络连接,使用TCP协议进行数据传输。 需要注意的是,本攻略主要面向有一定C#编程基础的读者,对Socket编程有一定了解。 步骤 以下是基于Socket实现简单聊天室功能的步骤: 第一步:…

    C# 2023年6月6日
    00
  • 体验.NET与文件存储服务MinIO

    对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势: 跨服务器可用 兼容Amazon S3 API 横向扩容 高可用 支持加密 MinIO就是一个高性能的文件服务,我们使用.NET来操作一下。 部署MinIO 最简单的办法,就是在Docker上运行MinIO。可以使用以下命令启动MinIO: docker ru…

    C# 2023年4月19日
    00
  • ASP.NET中内嵌页面代码的一个问题

    让我为您详细讲解一下“ASP.NET中内嵌页面代码的一个问题”的完整攻略。 在ASP.NET中,我们可以使用内嵌代码块的形式来在页面中嵌入C#或VB.NET代码,更方便地与页面交互。如下所示: <% //这里是C#或VB.NET代码 %> 使用内嵌代码块虽然方便,但也有一个问题,就是如果代码中包含了特殊字符(如<、>、&等等)…

    C# 2023年5月31日
    00
  • Asp.net core实现PushStream视频流推送

    Asp.net core实现PushStream视频流推送攻略 在Asp.net core中,可以使用PushStream技术来实现视频流推送。本攻略将提供详细的步骤和示例说明,演示如何在Asp.net core中实现PushStream视频流推送。 步骤 步骤1:创建一个新的Asp.net core Web应用程序 首先,需要创建一个新的Asp.net c…

    C# 2023年5月17日
    00
  • C# 为String类型增加方法详解

    C# 为String类型增加方法详解 介绍 String类型是C#中最常用的数据类型之一,也是常用于表示文本的类型。在C#中,我们可以通过扩展方法为String类型添加新的方法来丰富其功能。本篇文章将详细讲解如何为String类型添加新的方法。 步骤 1. 创建扩展方法类 首先,我们需要创建一个新的扩展方法类,用于存放我们将要添加的方法。 public st…

    C# 2023年5月31日
    00
  • ASP.NET MVC3手把手教你构建Web

    “ASP.NET MVC3手把手教你构建Web”是一篇教程,它旨在指导读者使用ASP.NET MVC3框架来构建Web应用程序。本教程详细介绍了使用MVC模式设计Web应用程序的各个方面,包括模型、视图和控制器。 下面是该教程的完整攻略: 介绍 在本教程中,我们将使用ASP.NET MVC3框架来创建一个简单的Web应用程序。在这个过程中,我们将介绍MVC模…

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