C#读写Excel的流程步骤

 更新时间:2023年12月28日 10:51:09   作者:微小冷  
这篇文章主要介绍了详解C#读写Excel的流程步骤,文中通过示例代码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起来学习吧

环境准备

首先,右键解决方案的依赖项->添加项目引用,搜索Excel,选中Microsoft Excel 16.0 Object Library->点击确定。

然后在源文件中添加命名空间

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Runtime.InteropServices;//导入dll

本教程使用了.Net6.0的顶层语句,所以不需要再导入诸如Core之类的,直接开撸代码。下面通过C#实现对Excel的读写

Excel写入

为了重点突出重点,下面争取用最短的代码,写一个将多维数组写入Excel并保存的函数,其基本流程如下

  • 创建一个Excel程序app
  • 在app中创建一个xlsx文件 wbk
  • 选中wbk中的第一个sheet
  • 激活whs

然后就可以具体读写Excel文件了。

void dataToExcel(double[,] data, string outName)
{
    Excel.Application app = new Excel.Application();
    Excel._Workbook wbk = app.Workbooks.Add(true);
    Excel._Worksheet whs = wbk.Sheets[1];
    //激活whs
    whs.Activate();

    //将二维数组中的数据写入whs这个sheet
    for (int i = 0; i < data.GetLength(0); i++)
        for (int j = 0; j < data.GetLength(1); j++)
            whs.Cells[i + 1, j + 1] = data[i, j].ToString();

    //将wbk另存为outName
    wbk.SaveAs(outName);
    //关闭wbk
    wbk.Close();
    //退出Excel程序
    app.Quit();
}

double[,] data = new double[5, 5];
// 获取当前工作路径
string path = System.Environment.CurrentDirectory;
// 输出文件的路径
path = Path.Combine(path, "test.xlsx");
dataToExcel(data, path);
Console.WriteLine($"输出到{path}");

这里需要建立起对Excel中数据组织的一个概念,首先是Excel软件,一个软件可以打开多个xlsx文件,每个文件中对应多个sheet,每个sheet中有多个单元格,对应关系如下表所示。

ExcelExcel.exetest.xlsxsheet1A1
C#appwbkwhswhs.Cells[1,1]

而通过这样一个简单的例程,也就理解了C#操作Excel的基本流程:打开->操作->关闭。

其打开流程,包括打开Excel程序、打开Excel文件以及打开sheet;关闭则包括关闭Excel文件和Excel程序。

Excel读取

读取与写入的流程相似,但写入时需要至少有一个Excel文件,刚好刚刚创建了一个

void readExcel(string inName)
{
    var app = new Excel.Application();
    var wbk = app.Workbooks.Add(inName);
    //app.Visible = true;
    
    var sh = wbk.Sheets[1];
    sh.Activate();
    Console.WriteLine("您打开了" + sh.Name);
    Console.WriteLine($"本sheet共有{sh.Rows.Count}行,{sh.Columns.Count}列");

    var usedRange = sh.UsedRange.CurrentRegion;
    for (int i = 0; i < usedRange.Rows.Count; i++)
    {
        for (int j = 0; j < usedRange.Columns.Count; j++)
            Console.Write($"{sh.Cells[i + 1, j + 1].Text} ");
        Console.Write("\n");
    }
    wbk.Close();
    app.Quit();
}

string path = System.Environment.CurrentDirectory;
path = Path.Combine(path, "test.xlsx");
readExcel(path);

命令行中输出结果为

您打开了Sheet1
本sheet共有1048576行,16384列
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

其中,**app.Visible = true;**时,Excel软件会被打开。

sh.Rows.Count, sh.Columns.Count分别表示总行数和总列数,一般就是最大行和最大列。

而sh.UsedRange.CurrentRegion表示已写入的区域,其对应的行数和列数就比较有代表性,根据这两个值进行循环,就可以把刚刚写入的数据打印出来了。

以上就是C#读写Excel的流程步骤的详细内容,更多关于C#读写Excel的资料请关注脚本之家其它相关文章!

相关文章

  • .net后台获取html控件值的2种方法

    .net后台获取html控件值的2种方法

    .net后台获取html控件值的2种方法,需要的朋友可以参考一下
    2013-04-04
  • C# 代码大小写规范说明

    C# 代码大小写规范说明

    这篇文章主要介绍了C# 代码大小写规范说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • C#从实体对象集合中导出Excel的代码

    C#从实体对象集合中导出Excel的代码

    数据的导出是项目中经常要实现的功能,就拿最常见的要导出成Excel来说,网上看来看去,都是介绍从Datatable中导出
    2008-08-08
  • C#隐藏主窗口的方法小结

    C#隐藏主窗口的方法小结

    这篇文章主要介绍了C#隐藏主窗口的方法,列举了C#隐藏窗口的三种常用方法,涉及C#窗体操作的常用技巧,需要的朋友可以参考下
    2016-03-03
  • C#如何优雅的对WinForm窗体应用程序进行权限控制

    C#如何优雅的对WinForm窗体应用程序进行权限控制

    经常会出现winfrom页面需要加载权限树,下面这篇文章主要给大家介绍了关于C#如何优雅的对WinForm窗体应用程序进行权限控制的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • c# 读取XML文件的示例

    c# 读取XML文件的示例

    这篇文章主要介绍了c# 读取XML文件的示例,帮助大家更好的理解和使用c# 编程语言,感兴趣的朋友可以了解下。
    2020-11-11
  • C#中ftp检测目录是否存在和创建文件夹的实现

    C#中ftp检测目录是否存在和创建文件夹的实现

    本文主要介绍了C#中ftp检测目录是否存在和创建文件夹的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 如何获取C#中方法的执行时间以及其代码注入详解

    如何获取C#中方法的执行时间以及其代码注入详解

    这篇文章主要给大家介绍了关于如何获取C#中方法的执行时间以及其代码注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-11-11
  • C#获取指定PDF文件页数的方法

    C#获取指定PDF文件页数的方法

    这篇文章主要介绍了C#获取指定PDF文件页数的方法,涉及C#操作pdf文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#编程中常见数据结构的比较(Unity3D游戏开发)

    C#编程中常见数据结构的比较(Unity3D游戏开发)

    在本篇内容里我们给大家整理了关于Unity3D游戏开发中C#编程中常见数据结构的比较相关知识点内容,需要的朋友们参考下。
    2019-05-05

最新评论