C#读写Excel的几种方法

一、简述:

        因为一些需要,需要使用excel读写,之前采用csv文件方式读写有些局限,而且,因为最近这台电脑的office组件右问题,这个方法用不了了。所以,得探索一下Excel新的读取方式,留个记录以便日后查看。

       方式1:使用office组件, Microsoft.Office.Interop.Excel

       方式2:使用NPOI组件,

       方式3:使用OleDB组件,

 

二、详细介绍

       方式1:使用office的COM组件, Microsoft.Office.Interop.Excel

        依赖:1.需要安装Excel;2.需要添加Microsoft.Office.Interop.Excel 的dll引用 。

        使用体验;可以灵活的操作单个单元格,但读写比较慢(数据量大的时候)。数据量较少还是可以用的。数据量大的时候按行读写可以快点,但。。。只是快点。

        官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.excel?view=excel-pia

        使用方法:手头没有现成代码。借鉴(抄)了一下别人的,未验证手头电脑不好使没有excel。

                     链接在此,建议看原文,我的只是用来给自己备忘的  。

                     C#读写Excel(Com组件的方式):https://blog.csdn.net/qq_33459369/article/details/79314465

                     C#读写Excel的几种方法:https://blog.csdn.net/u010593753/article/details/89676558

	//开头引用
    using Microsoft.Office.Interop.Excel;

    //引用定义
    Microsoft.Office.Interop.Excel.Application app;
	Microsoft.Office.Interop.Excel.Workbooks wbs;
	Microsoft.Office.Interop.Excel.Worksheet ws;

    string fileName ="D:\\test.xls";
	object oMissiong = System.Reflection.Missing.Value;
    app = new Microsoft.Office.Interop.Excel.Application();
    wbs = app.Workbooks;
    
    wbs.Open(fileName, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
    ws = app.Worksheets.get_Item(1);
    ws .Cells[1, 1] = "test";
    wbs.SaveAs(fileName , oMissiong , oMissiong, oMissiong, oMissiong, oMissiong,XlSaveAsAccessMode.xlNoChange,oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);

    ClosePro(app, wbs);

    //关闭进程
    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组件

        参考源:   NPOI使用手册    https://www.cnblogs.com/joean/p/4661056.html

                          NPOI使用教程附Helper  https://www.cnblogs.com/wyy1234/p/10039767.html

        NPOI.Util           基础辅助库
        NPOI.POIFS     OLE2格式读写库
        NPOI.DDF         Microsoft Drawing格式读写库
        NPOI.SS           Excel公式计算库
        NPOI.HPSF      OLE2的Summary Information和Document Summary Information属性读写库
        NPOI.HSSF      Excel BIFF格式读写库

        注意留意.net 和NPOI版本。

 

 

       方式3:使用OleDB组件

 

 

     ......

     临时有事,下次接着写。

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值