C#使用NPOI操作Excel错误解决

本文介绍了一种在使用SharpZipLib导出Excel文件时遇到的问题及解决方案,包括处理DLL引用错误和解决文件关闭异常的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf116

解决方案:

1:发现没有引用此dll,在项目的package文件夹下SharpZipLib.0.86.0文件夹中找到SharpZipLib.dll引用,即OK。

2:引用版本不对。

问题:System.ObjectDisposedException: 无法访问已关闭的文件。

(顺便附上源代码)

        /// <summary>
        /// 导出数据到Excel中
        /// </summary>
        /// <param name="Url">文件导出地址</param>
        public void Export(string Url, List<Word> list)
        {
            try
            {
                //创建Excel文件的对象
                IWorkbook book;
                string fileExt = Path.GetExtension(Url).ToLower();
                if (fileExt == ".xlsx")
                {
                    book = new XSSFWorkbook();
                }
                else if (fileExt == ".xls")
                {
                    book = new HSSFWorkbook();
                }
                else
                {
                    book = null;
                }
                if (book == null)
                {
                    return;
                }

                //添加一个sheet
                ISheet sheetWords = book.CreateSheet("Words");

                //给sheet添加第一行的头部标题
                IRow rowWords = sheetWords.CreateRow(0);
                rowWords.CreateCell(0).SetCellValue("序号");
                rowWords.CreateCell(1).SetCellValue("词条");
                rowWords.CreateCell(2).SetCellValue("词性词义");

                //将数据逐步写入sheet各个行
                for (int i = 0, k = 0; i < list.Count - 1; i++, k++)
                {
                       IRow rowtemps = sheetWords.CreateRow(k + 1);
                       rowtemps.CreateCell(0).SetCellValue(k + 1);
                       rowtemps.CreateCell(1).SetCellValue(list[i + 1].WordEntry);
                       rowtemps.CreateCell(2).SetCellValue(list[i + 1].WordProperty + list[i + 1].Meaning);
                }
                // 写入到文件           
                FileStream fs = new FileStream(Url, FileMode.Create);
                book.Write(fs);
                fs.Seek(0, SeekOrigin.Begin);
                fs.Close();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString()+"\t"+ex.ToString());
            }
        }

解决方法:注释了fs.Seek(0, SeekOrigin.Begin);就可了!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值