Preface: XSSFWorkBook operates as Excel, creates new excel and reads records in several ways from existing excel files
Look at the code:
introduce namespace:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
Code:
public class XSSFWorkBookDemo
{
/// <summary>
/// 使用npoi创建一个excel文件
/// </summary>
public void NPOICreateExcel()
{
//声明一个工作簿
XSSFWorkbook workBook = new XSSFWorkbook();
//创建一个sheet页
ISheet sheet= workBook.CreateSheet();//sheet页默认名称sheet*
ISheet sheet2 = workBook.CreateSheet("testSheet2");//指定sheet页名称为”testSheet2“
//向第一行第一列的单元格添加文本“老王的demo”
IRow row= sheet.GetRow(0);//获取第一行
if (row==null)//workbook 创建的sheet里是获取不到对应的excel行和列的单元格对象
{
row= sheet.CreateRow(0);
}
ICell cell= row.GetCell(0);//获取第一列
if (cell==null)
{
cell= row.CreateCell(0);
}
cell.SetCellValue("老王的Demo");
//复制第一个sheet,新的sheet名为sheet*(*)
ISheet sheet3 = workBook.CloneSheet(0);
//复制第二个sheet,且设置新的sheet的名称为copySheet1
workBook.CloneSheet(1, "copySheet1");
//输出excel文件
using (FileStream fs = File.OpenWrite("D:\\text.xlsx"))
{
workBook.Write(fs);//向打开的这个xls文件中写入并保存。
}
}
/// <summary>
/// npoi读取文件---读取指定位置的excel文件
/// </summary>
/// <param name="filePath">excel文件地址</param>
public void NPOIReadExcel1(string filePath)
{
#region 方式一:读取指定路径的excel文件
//验证文件类型
int index= filePath.LastIndexOf('.');
string excelType =index<0?"":filePath.Substring(index+1);
IWorkbook workbook=null;
if (excelType=="xls")
{
Console.WriteLine("xls类型的excle文件不可以通过文件路径读取文件");
}
else if (excelType=="xlsx")
{
workbook = new XSSFWorkbook(filePath);
}
else
{
Console.WriteLine("异常的文件,文件不是excel文件");
}
#endregion
//获取excel有几个sheet页
if (workbook!=null)
{
Console.WriteLine("读取到excel文件,且excel有"+workbook.NumberOfSheets+"个Sheet页");
}
else
{
Console.WriteLine("未能读取excel文件");
}
}
/// <summary>
/// NPOI读取excel文件方式二:以fileinfo对象进行读取
/// </summary>
/// <param name="filePath">文件路径</param>
public void NPOIReadExcel2(string filePath)
{
//string filePath = "D:\\NPOITest.xlsx";
IWorkbook workbook = null;
FileInfo file = new FileInfo(filePath);
//string type= file.GetType();
if (file.Extension==".xlsx")
{
workbook = new XSSFWorkbook(file);
}
else if (file.Extension==".xls")
{
//workbook = new HSSFWorkbook(file);//没有fileinfo参数的构造方法
Console.WriteLine("读取到了xls文件,npoi不可以以fileinfo的方式读取该文件");
}
else
{
Console.WriteLine("未知文件,后缀名:"+file.Extension);
}
if (workbook!=null)
{
Console.WriteLine("读取了excel文件:" + file.Name + ",且excel有" + workbook.NumberOfSheets + "个Sheet页");
}
}
/// <summary>
/// NPOI读取excel文件方式二:以Stream对象进行读取
/// </summary>
/// <param name="filePath">文件路径</param>
public void NPOIReadExcel3(string filePath)
{
Stream stream = File.OpenRead(filePath);
IWorkbook workbook = null;
workbook =new XSSFWorkbook(stream);//xlsx后缀名的excel文件的文件流,如果是xls文件的文件流,执行会报错
//workbook = new HSSFWorkbook(stream);//xls后缀名的excel文件的文件流
Console.WriteLine(string.Format("读取了{0}文件,excel文件有{1}个sheet页面",filePath,workbook.NumberOfSheets) );
}
/*
* 还有XSSFWorkBook 的
* XSSFWorkbook(XSSFWorkbookType workbookType); 构造方法不清楚使用场景
* XSSFWorkbook(OPCPackage pkg); 构造方法不清楚使用场景
*/
}