c#使用NPOI导出Excel及往Excel里追加记录
最近在做一个打印发票的程序,要求保存打印记录,所以用到了NPOI往Excel里导入数据,但是遇到了一些问题没法解决,最后看了别人的Java程序后才明白。下面只是说明几个问题,而不是怎样使用NPOI
问题1:Invalid header signature; read 0x0000000000000000, expected 0xE11AB1A1E011CF
原因:通常的原因是读取的文件头信息不对,可能是类似于将txt文件的后缀名直接改成xls,或者由其他软件导出成的Excel。
意思是我们用FileStream fs=new FileStream("demo.xls");创建的Excel表,这其实是一个文本文件,所以不能用这种方式创建。
解决:
MemoryStream ms = new MemoryStream(); //创建内存流用于写入文件
IWorkbook workbook = new HSSFWorkbook(); //创建Excel工作部
ISheet sheet = workbook.CreateSheet("EquipBill");//创建工作表
IRow row = sheet.CreateRow(sheet.LastRowNum);//在工作表中添加一行
ICell cell = row.CreateCell();//创建单元格
cell1.SetCellValue("领用单位");//赋值 workbook.Write(ms);//将Excel写入流
ms.Flush();
ms.Position = ; FileStream dumpFile = new FileStream(“demo.xls”, FileMode.Create, FileAccess.ReadWrite,FileShare.ReadWrite);
ms.WriteTo(dumpFile);//将流写入文件
问题2:不能往Excel文件里追加记录
试了很多方法使用FileMode.Append会报错、利用sheet.LastRowNum+1创建一行再往里添加数据但是最后Excel里并没有显示
解决:
FileStream fs = new FileStream(“demo.xls”, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//读取流 POIFSFileSystem ps=new POIFSFileSystem(fs);//需using NPOI.POIFS.FileSystem;
IWorkbook workbook = new HSSFWorkbook(ps);
ISheet sheet = workbook.GetSheetAt();//获取工作表
IRow row = sheet.GetRow(); //得到表头
FileStream fout = new FileStream(“demo.xls”, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);//写入流
row = sheet.CreateRow((sheet.LastRowNum + ));//在工作表中添加一行 ICell cell1 = row.CreateCell();
cell1.SetCellValue(“测试数据”);//赋值 fout.Flush();
workbook.Write(fout);//写入文件
workbook = null;
fout.Close();
一看代码就明白了,先读取,再写入。为什么要得到表头,因为一个excel必须有字段列头即,字段列头,便于赋值
如果你遇到了我没遇到的问题,请分享给大家
c#使用NPOI导出Excel及往Excel里追加记录的更多相关文章
- NPOI导出多张图片到Excel
常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有 ...
- 封装NPOI导出含下拉列表的Excel
/// <summary> /// 绑定数据的方法 /// </summary> /// <param name="ssfworkbook">H ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- 基于NPOI导出和导入Excel
概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...
- (C#)使用NPOI导出Excel
在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- C# NPOI导出Excel和EPPlus导出Excel比较
系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...
- NPOI导出EXCEL 打印设置分页及打印标题
在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置 sheet1.FitToPage = false; 而 ...
- .NET NPOI导出Excel详解
NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...
- NPOI导出Excel(含有超过65335的处理情况)
NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...
随机推荐
- C语言中fseek函数
C语言fseek()函数:用来设定文件的当前读写位置 头文件: #include <stdio.h> 定义函数: int fseek(FILE * stream, long offset, ...
- javascript闭包的一个例子
<html> <head> <title>elementFromPoint</title> <script type="text/jav ...
- 使pre的内容自动换行
<pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...
- Ext 项目随笔
region: This region's layout position (north, south, east, west or center). Read-only. collapsible:t ...
- 网络安全学习和CTF必不可少的一些网站
[转载备用] 原文地址 http://blog.csdn.net/ida0918/article/details/52730662 http://www.sec-wiki.com/skill/ 安全 ...
- TestCase--搜索&查询模块
一般地,电商网站的搜索模块都是一个搜索字段的输入框和一个搜索按钮组成 如下所示: 而电商网站的后台系统,如erp.wms等系统,一般都会有下方的查询模块 其中包括:时间选择框.下拉框.输入框等 如下所 ...
- Note for Computer Networks_Circuit Switching & Packet Switching
Packet Switching: - In a packet switched network data is transmitted in blocks(packets), typically l ...
- 断言--NSAssert
NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常 ...
- 洛谷P1984 SDOI2008烧水问题
P1984 [SDOI2008]烧水问题 186通过 438提交 题目提供者lych 标签数论(数学相关)模拟各省省选 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 求助! 也是醉了... ...
- 华为OJ平台——百钱买百鸡问题
题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...