服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - 详解C#读写Excel的几种方法

详解C#读写Excel的几种方法

2022-08-11 09:46jqw2009 C#

这篇文章主要介绍了详解C#读写Excel的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1 使用office自带的库

前提是本机须安装office才能运行,且不同的office版本之间可能会有兼容问题,从nuget下载 microsoft.office.interop.excel

详解C#读写Excel的几种方法

读写代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using microsoft.office.interop.excel;
using excel = microsoft.office.interop.excel;
 
    private void btn_office_click(object sender, eventargs e)
    {
      string importexcelpath = "e:\\import.xlsx";
      string exportexcelpath = "e:\\export.xlsx";
      //创建
      excel.application xlapp = new excel.application();
      xlapp.displayalerts = false;
      xlapp.visible = false;
      xlapp.screenupdating = false;
      //打开excel
      excel.workbook xlsworkbook = xlapp.workbooks.open(importexcelpath, system.type.missing, system.type.missing, system.type.missing,
      system.type.missing, system.type.missing, system.type.missing, system.type.missing, system.type.missing, system.type.missing, system.type.missing,
      system.type.missing, system.type.missing, system.type.missing, system.type.missing);
 
      //处理数据过程,更多操作方法自行百度
      excel.worksheet sheet = xlsworkbook.worksheets[1];//工作薄从1开始,不是0
      sheet.cells[1, 1] = "test";
 
      //另存
      xlsworkbook.saveas(exportexcelpath, type.missing, type.missing, type.missing, type.missing, type.missing, xlsaveasaccessmode.xlnochange,
        type.missing, type.missing, type.missing, type.missing, type.missing);
      //关闭excel进程
      closepro(xlapp, xlsworkbook);
    }
 
    public void closepro(excel.application xlapp, excel.workbook xlsworkbook)
    {
      if (xlsworkbook != null)
        xlsworkbook.close(true, type.missing, type.missing);
      xlapp.quit();
      // 安全回收进程
      system.gc.getgeneration(xlapp);
      intptr t = new intptr(xlapp.hwnd);  //获取句柄
      int k = 0;
      getwindowthreadprocessid(t, out k);  //获取进程唯一标志
      system.diagnostics.process p = system.diagnostics.process.getprocessbyid(k);
      p.kill();   //关闭进程
    }

2. 使用npoi  

地址:https://github.com/tonyqus/npoi

在不安装office的时候也是可以读写的,速度很快,从nuget下载 npoi

详解C#读写Excel的几种方法

读写代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using system.io;
using npoi;
using npoi.ss.usermodel;
 
    private void btn_npoi_click(object sender, eventargs e)
    {
      string importexcelpath = "e:\\import.xlsx";
      string exportexcelpath = "e:\\export.xlsx";
      iworkbook workbook = workbookfactory.create(importexcelpath);
      isheet sheet = workbook.getsheetat(0);//获取第一个工作薄
      irow row = (irow)sheet.getrow(0);//获取第一行
 
      //设置第一行第一列值,更多方法请参考源官方demo
      row.createcell(0).setcellvalue("test");//设置第一行第一列值
 
      //导出excel
      filestream fs = new filestream(exportexcelpath, filemode.create, fileaccess.readwrite);
      workbook.write(fs);
      fs.close();
    }

3. 使用closedxml  

地址:https://github.com/closedxml/closedxml

从nuget下载closedxml

详解C#读写Excel的几种方法

读写代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using closedxml;
using closedxml.excel;
 
    private void btn_closedxml_click(object sender, eventargs e)
    {
      string importexcelpath = "e:\\import.xlsx";
      string exportexcelpath = "e:\\export.xlsx";
      var workbook = new xlworkbook(importexcelpath);
 
      ixlworksheet sheet = workbook.worksheet(1);//这个库也是从1开始
      //设置第一行第一列值,更多方法请参考官方demo
      sheet.cell(1, 1).value = "test";//该方法也是从1开始,非0
 
      workbook.saveas(exportexcelpath);
    }

4. 使用 spire.xls  

地址:https://www.e-iceblue.com/introduce/free-xls-component.html

spire分免费和收费,无特殊需求用免费即可

从nuget下载free spire.xls for .net

详解C#读写Excel的几种方法

读写代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using spire.xls;
 
    private void btnspire_click(object sender, eventargs e)
    {
      string importexcelpath = "e:\\import.xlsx";
      string exportexcelpath = "e:\\export.xlsx";
 
      spire.xls.workbook workbook = new spire.xls.workbook();
      workbook.loadfromfile(importexcelpath);
      //处理excel数据,更多请参考官方demo
      spire.xls.worksheet sheet = workbook.worksheets[0];
      sheet.range[1,1].text = "test";//该方法也是从1开始,非0
 
      workbook.savetofile(exportexcelpath);
    }

5. epplus  

地址:https://github.com/pruiz/epplus/tree/master/epplus

没用过这个,暂时就不做介绍了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/kenjiang/p/10790652.html

延伸 · 阅读

精彩推荐
  • C#C#实现组合排列的方法

    C#实现组合排列的方法

    这篇文章主要介绍了C#实现组合排列的方法的相关资料,并附实例代码,需要的朋友可以参考下...

    C#教程网6552021-12-09
  • C#C#中利用断点操作调试程序的步骤详解

    C#中利用断点操作调试程序的步骤详解

    所谓断点调试就是检测执行路径和数据是否正确,中断游戏运行在线调试,下面这篇文章主要给大家介绍了关于C#中利用断点操作调试程序的相关资料,需...

    小禾斗7232022-02-16
  • C#C#创建一个小型Web Server(Socket实现)

    C#创建一个小型Web Server(Socket实现)

    这篇文章主要介绍了关于C#利用Socket实现创建一个小型Web Server的相关资料,文中通过示例代码介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧...

    千一网络6682021-12-27
  • C#c#计算某段代码的执行时间实例方法

    c#计算某段代码的执行时间实例方法

    在本篇文章里我们给大家整理了关于c#计算某段代码的执行时间的方法和经验,有兴趣的朋友们学习下。...

    C#教程网11232022-07-07
  • C#C# interface与delegate效能比较的深入解析

    C# interface与delegate效能比较的深入解析

    本篇文章是对C#中interface与delegate的效能比较进行了详细的分析介绍,需要的朋友参考下...

    C#教程网4932020-12-14
  • C#10个C#程序员经常用到的实用代码片段

    10个C#程序员经常用到的实用代码片段

    如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来帮助,从底层的资源操作,到上层的UI应用,这些代码也许能给你的开发节省不...

    C#教程网4362021-10-27
  • C#C#求数组中元素全排列的方法

    C#求数组中元素全排列的方法

    这篇文章主要介绍了C#求数组中元素全排列的方法,较为详细的分析了数组全排列算法的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    北风其凉3852021-10-18
  • C#自定义WPF窗体形状的实战记录

    自定义WPF窗体形状的实战记录

    WPF是制作界面的一大利器,下面这篇文章主要给大家介绍了关于自定义WPF窗体形状的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作...

    nopapp4262022-02-28