excel文本写入 npoi_C#学习 NPOI使用-excel操作

原标题:C#学习 NPOI使用-excel操作

NPOI excel文件读取创建操作

在C#中对Excel进行读写操作时,先引用两个个类库NPOI.dll和Ionic.Zip.dll。

对EXcel文件读取操作:

首先,对文件的操作都需要使用FileStream

FileStream file=new FileStream(“1.xls”,FileMode.Open,FileAccess.Read);

对Excel工作薄操作时使用引用的NPOI类库中的一个类HSSFWorkbook

Workbook wkb=new HSSFWorkbook(filestream)

//HSSFWorkbook类实现了Workbook接口

对excel工作薄获取时需要HSSFWorkbook带参数的构造方法,参数为FileSteam的对象

拿到工作薄厚获取其中的表:

Sheet sheet=wkb.GetSheet(“Sheet1”);//参数为工作薄中的表明

获取表中的每一行,需要进行遍历

For(int i=0;i

{

Row row=sheet.GetRow(i);//获取第i行的数据

For(int j=0;j

{

Cell cell=row.GetCell(j);//获取第j个表格数据

If(cell!=null)

{

String str=cell.StringCellValue;//获取表格数据

}

}

}

完整的获取工作薄中数据

// 读取Excel文件,使用流操作

using (FileStream file = new FileStream("1.xls", FileMode.Open, FileAccess.Read))

{

// 工作薄使用Workbook表示

using (Workbook wkb = new HSSFWorkbook(file))

{

// 拿到工作簿以后

using (Sheet sheet = wkb.GetSheet("Sheet2"))

{

// 遍历行

// 这个以最后一个为空的行

for (int i = 0; i < sheet.LastRowNum + 1; i++)

{

Row row = sheet.GetRow(i);

// 单元格是以最后一个有数据的cell为最后一个

for (int j = 0; j < row.LastCellNum; j++)

{

Cell cell = row.GetCell(j);

if (cell != null)

{

string str = cell.StringCellValue;

Console.Write(str + "\t");

}

else

{

Console.Write("\t");

}

}

Console.WriteLine();

}

}

}

}

创建工作薄

由于依旧是对于文件的操作,所以用FileStream类先创建一个文件

FileStream file=File.Create(“excel.xls”);

创建一个新的工作薄

Workbook wkb=new HSSFWorkbook()

创建一个表

Sheet sheet=wkb.CreateSheet(“sheetName”);

创建行

Row row=sheet.CreateRow(3);//创建行,参数为第几行

Cell cell=row.CreateCell(3,CellType.STRING)//创建表格,参数为表格在第几列,类型

cell.SetCellValue(“cellValue”);//表格中的数据

wkb.Write(file);把工作薄写入到文件中去

完整代码:

using(FileStream file = File.Create("excel.xls"))

{

using (Workbook wkb = new HSSFWorkbook())

{

// 创建Sheet等

using (Sheet sheet = wkb.CreateSheet("一个默认的名字"))

{

// 创建行

Row row = sheet.CreateRow(3);

Cell cell = row.CreateCell(3, CellType.STRING);

cell.SetCellValue("我是一个字符串");

wkb.Write(file);

}

}

}

数据导入

先用文件流创创建一个Excel表

FileStream file=new FileStream(“ExcelName.xls”,FileMode.Create,FileAccess.Write);

Workbook wkb=new HSSFWorkbook()//创建工作薄

Sheet sheet=wkb.CreateSheet(“sheetName”);//创建表

StreamReader reader=new StreamReader(“name.txt”);获取文件读取流

完整代码:

FileStream file = new FileStream("name.xls", FileMode.Create, FileAccess.Write);

using (Workbook wkb = new HSSFWorkbook())

{

using (Sheet sheet = wkb.CreateSheet("名字"))

{

using (StreamReader reader = new StreamReader("name.txt"))

{

string temp;

int index = 0;

while ((temp = reader.ReadLine()) != null)

{

// 导入每一行

string[] arr = temp.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries);

// 姓名 性别 年龄

Row row = sheet.CreateRow(index);

// 姓名的单元格

Cell cellName = row.CreateCell(0, CellType.STRING);

cellName.SetCellValue(arr[0]);

row.CreateCell(1, CellType.STRING).SetCellValue(arr[1]);

row.CreateCell(2, CellType.NUMERIC).SetCellValue(Convert.ToInt32(arr[2]));

index++;

}

wkb.Write(file);

}

}

}

file.Close();

file.Dispose();

数据导出

从数据库里把读出来的数据导出到excel表中。首先要先创建一个excel文件、工作薄、表。然后从数据库中逐条读取出数据再把数据放入到新创建的表中。

FileStream file=File.OpenWrite(“Student.xls”);//创建一个excel文件

Workbook wkb=new HSSFWorkbook()//创建工作薄

Sheet sheet=wkb.CreateSheet(“sheetName”);创建表

SqlDataReader reader=SQLHelper.ExevuteReader(sql);//从数据库中读取数据

Row rowHead=sheet.CreateRow(0);//创建行,用于存放表头

//创建表头

for(int i=0;i

{

Cell cell=rowHead.CreateCell(I,CellType.STRING);//创建表格存放表头数据

Cell.SetCellValue(reader.GetName(i));//获取数据库中每一列的列名作为表头存放在表中

}

把表中的数据存放到表中

While(reader.Read())

{

Row rowBody=sheet.CreateRow(index);//创建行

//为每一行创建表格存放数据库中读取出来的数据

for(int i=0;i

{

Cell c=rowBody.CreateCell(i);

c.SetCellValue(reader[i].ToString());

}

}

完整代码:

using (FileStream file = File.OpenWrite("Student.xls"))

{

using (Workbook wkb = new HSSFWorkbook())

{

using (Sheet sheet = wkb.CreateSheet("入学学员:20120101-20121231"))

{

// 创建多少行

// 创建多少列

// 表头如何实现

using (SqlDataReader reader =

SQLHelper.ExecuteReader(sql))

{

int index = 1;

// 表头

// reader有一个GetName方法

// FieldCount属性

Row rowHead = sheet.CreateRow(0);

for (int i = 0; i < reader.FieldCount; i++)

{

Cell cell = rowHead.CreateCell(i, CellType.STRING);

cell.SetCellValue(reader.GetName(i));

}

while (reader.Read())

{

// 写数据

Row rowBody = sheet.CreateRow(index);

for (int i = 0; i < reader.FieldCount; i++)

{

// 循环每一列

Cell c = rowBody.CreateCell(i);

c.SetCellValue(reader[i].ToString());

}

index++;

}

// 写到流中

wkb.Write(file);

}

}

}

}

_一个.Net和安卓技术狂爱者博客,主要以发布和分享.Net和安卓文章为主,争做全栈开发工程师,爱学习,爱挑战,爱编程。用技术改变生活。欢迎关注,微信公众号:(net4k8k)[做个12k的技术员].博客网址:http://.

欢迎加入qq技术交流群:538742639.返回搜狐,查看更多

责任编辑:

你可能感兴趣的:(excel文本写入,npoi)