关于c#使用Npoi库的一些随笔
程序员文章站
2022-07-13 22:55:19
...
1.XSSFWorkbook和HSSFWorkbook的不同
二者都可以生成excel,但是格式上有所区别。
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
XSSFWorkbook:是操作Excel2007 +的版本,扩展名是.xlsx
2.excel最后一行和最后一列的定义
可以利用下面的代码读取最后一行和某一行的最后一列,sheet是指sheet的名称。
sheet.LastRowNum
sheet.GetRow(i).LastCellNum
但是需要注意的是,最后一行检索的行数,是包括改变了行高的行数。而最后一列需要设置格式(例如内容的格式,文本、数字等,单纯改变列宽不作数)。
3. npoi对于excel的索引
行和列都从0开始。
4.excel空单元格的读取。
首先,需要改变excel单元格的格式,否则sheet.GetRow(i).GetCell(j)的时候会报错,提示没有引用对象。
第二,空单元格读取结果为空,而不是null
sheet.GetRow(i).GetCell(j).ToString()
5.excel单元格的写入
利用npoi创建一个新的sheet时,必须先createrow,在createcell,在setvalue,否则同样报错,提示没有引用对象。
XSSFWorkbook newWorkBook = new XSSFWorkbook();
ISheet newSheet = newWorkBook.CreateSheet("newsheet");
int creatRowIndex = 0;
newSheet.CreateRow(creatRowIndex);
sheet.GetRow(i).CreateCell(j).SetCellValue();
6.读取excel中的图片
需要注意的是 workbook.GetAllPictures(),可以读取所有的图片,但是在foreach中遍历的顺序与图片位置无关,只与插入excel的顺序有关
XSSFWorkbook workbook;
FileStream file;
file = new FileStream(@"E:\运输资源.xlsx", FileMode.Open, FileAccess.Read);
workbook = new XSSFWorkbook(file);
XSSFSheet sheet = (XSSFSheet)workbook.GetSheet("导出资源");
System.Collections.IList pictures = workbook.GetAllPictures();
foreach (XSSFPictureData pic in pictures)
{
string ext = pic.SuggestFileExtension();//获取扩展名
string path = string.Empty;
BitmapImage GeneralLayoutImage = new BitmapImage();
GeneralLayoutImage.BeginInit();
GeneralLayoutImage.StreamSource = new MemoryStream(pic.Data);
GeneralLayoutImage.EndInit();
img.Source = GeneralLayoutImage;
}
上一篇: 2013年3月份总结