欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于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;
            }
相关标签: wpf底层