C# 简单读写 EXCEL

15 篇文章 0 订阅

推荐两个很好用的开源程序分别处理Excel97-2003和Excel2007两种两种格式。


1、NOPI:Excel97-2003处理利器,可以在不安装office的情况下处理excel,索引从0开始。

下载:http://npoi.codeplex.com/releases/view/38113 

教程:http://tonyqus.sinaapp.com/tutorial 

PS:上面提供的下载链接是1.2.5版本的,NOPI从2.0版本开始支持Excel2007,而最新的版本是2.1.1.....

下载并添加引用NPOI.dll

1.1 从模板生成Excel文件

            using (var fs = File.OpenRead("Templates/KPI.xls")) 
            {
                HSSFWorkbook iworkbook = new HSSFWorkbook(fs);
                ISheet sheetLTE = iworkbook.GetSheet("LTE");
                sheetLTE.CreateRow(0).CreateCell(0).SetCellValue(1);
                //sheetLTE.GetRow(0).GetCell(0).SetCellValue(1);//已存在的单元格
            }
1.2 保存

        /// <summary> 保存
        /// </summary>
        public void Save(string path)
        {

            if (string.IsNullOrEmpty(path)) return;
            using (var fs = File.Create(path)) 
            {
                iworkbook.Write(fs); 
                Console.WriteLine("提示:创建成功!");
            }
        }

注: 其他操作请参照教程吧。另外看到有帖子说NOPI对Excel2007的处理只要从HSSFWorkbook改为Workbook就可以了,简单测试了NOPI2.1.1对Excel2007的处理,是可以读写,不过打开后格式会有错误,大概哪里没有处理好吧......不过弄来弄去就弄麻烦了......所以就那样先搁着吧

2、ExcelPackage,索引从1开始。

下载:http://excelpackage.codeplex.com/

这也是个很好用的开源程序,而且对Excel2007的处理非常简单。

下载并添加引用ExcelPackage.dll

2.1 从模板生成Excel文件

            FileInfo template = new FileInfo("Templates/KPI.xlsx");
            FileInfo newFile = new FileInfo(@"C:/Test.xlsx");
            excelPackage = new ExcelPackage(newFile, template);
            sheetLTE = excelPackage.Workbook.Worksheets["LTE"];
            sheetLTE.Cell(nextRowIndex_LTE, 1).Value = "1";
            excelPackage.Save();
注:有多张Sheet表时,如果不是每张表都有修改,那么在执行  excelPackage.Save();的时候会报错“未将对象设置到引用的实例”, 解决办法点在这里,“ If the worksheet has not been accessed, calling the public accessor WorksheetXml instead of the private class variable initiallizes it correctly.”,下载源文件修改完成后重新生成DLL再引用即可。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值