手机
当前位置:查字典教程网 >编程开发 >C#教程 >使用Npoi操作excel的解决办法
使用Npoi操作excel的解决办法
摘要:Npoi简介----------------------------------------------------------------...

Npoi 简介

--------------------------------------------------------------------------------

1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet;行:Row;单元格Cell。

2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113

4.忘了告诉大家npoi是做什么的了,npoi 能够读写几乎所有的Office 97-2003文件格式,至少能够支持Word, PowerPoint, Excel, Visio的格式。

--------------------------------------------------------------------------------

使用Npoi创建一个简单的xls文件

--------------------------------------------------------------------------------

复制代码 代码如下:

//创建xls文件

private void button1_Click(object sender, EventArgs e)

{

//创建工作薄

HSSFWorkbook wk = new HSSFWorkbook();

//创建一个名称为mySheet的表

ISheet tb = wk.CreateSheet("mySheet");

//创建一行,此行为第二行

IRow row = tb.CreateRow(1);

for (int i = 0; i < 20; i++)

{

ICell cell = row.CreateCell(i); //在第二行中创建单元格

cell.SetCellValue(i);//循环往第二行的单元格中添加数据

}

using (FileStream fs = File.OpenWrite(@"c:/myxls.xls")) //打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!

{

wk.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。

MessageBox.Show("提示:创建成功!");

}

}

使用Npoi读取一个简单的xls文件

--------------------------------------------------------------------------------

复制代码 代码如下:

//读取xls文件

private void button2_Click(object sender, EventArgs e)

{ StringBuilder sbr = new StringBuilder();

using (FileStream fs = File.OpenRead(@"c:/myxls.xls")) //打开myxls.xls文件

{

HSSFWorkbook wk = new HSSFWorkbook(fs); //把xls文件中的数据写入wk中

for (int i = 0; i < wk.NumberOfSheets; i++) //NumberOfSheets是myxls.xls中总共的表数

{

ISheet sheet = wk.GetSheetAt(i); //读取当前表数据

for (int j = 0; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数

{

IRow row = sheet.GetRow(j); //读取当前行数据

if (row != null)

{

sbr.Append("-------------------------------------rn"); //读取行与行之间的提示界限

for (int k = 0; k <= row.LastCellNum; k++) //LastCellNum 是当前行的总列数

{

ICell cell = row.GetCell(k); //当前表格

if (cell != null)

{

sbr.Append(cell.ToString()); //获取表格中的数据并转换为字符串类型

}

}

}

}

}

}

sbr.ToString();

using (StreamWriter wr = new StreamWriter(new FileStream(@"c:/myText.txt", FileMode.Append))) //把读取xls文件的数据写入myText.txt文件中

{

wr.Write(sbr.ToString());

wr.Flush();

}

}

--------------------------------------------------------------------------------

使用Npoi创建一个常用的xls文件

--------------------------------------------------------------------------------

复制代码 代码如下:

//创建一个常用的xls文件

private void button3_Click(object sender, EventArgs e)

{

IWorkbook wb = new HSSFWorkbook();

//创建表

ISheet sh = wb.CreateSheet("zhiyuan");

//设置单元的宽度

sh.SetColumnWidth(0, 15 * 256);

sh.SetColumnWidth(1, 35 * 256);

sh.SetColumnWidth(2, 15 * 256);

sh.SetColumnWidth(3, 10 * 256);

int i = 0;

#region 练习合并单元格

sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 3));

//CellRangeAddress()该方法的参数次序是:开始行号,结束行号,开始列号,结束列号。

IRow row0 = sh.CreateRow(0);

row0.Height = 20 * 20;

ICell icell1top0 = row0.CreateCell(0);

icell1top0.CellStyle = Getcellstyle(wb, stylexls.头);

icell1top0.SetCellValue("标题合并单元");

#endregion

i++;

#region 设置表头

IRow row1 = sh.CreateRow(1);

row1.Height = 20 * 20;

ICell icell1top = row1.CreateCell(0);

icell1top.CellStyle = Getcellstyle(wb, stylexls.头);

icell1top.SetCellValue("网站名");

ICell icell2top = row1.CreateCell(1);

icell2top.CellStyle = Getcellstyle(wb, stylexls.头);

icell2top.SetCellValue("网址");

ICell icell3top = row1.CreateCell(2);

icell3top.CellStyle = Getcellstyle(wb, stylexls.头);

icell3top.SetCellValue("百度快照");

ICell icell4top = row1.CreateCell(3);

icell4top.CellStyle = Getcellstyle(wb, stylexls.头);

icell4top.SetCellValue("百度收录");

#endregion

using(FileStream stm=File.OpenWrite(@"c:/myMergeCell.xls"))

{

wb.Write(stm);

MessageBox.Show("提示:创建成功!");

}

}

#region 定义单元格常用到样式的枚举

public enum stylexls

{

头,

url,

时间,

数字,

钱,

百分比,

中文大写,

科学计数法,

默认

}

#endregion

#region 定义单元格常用到样式

static ICellStyle Getcellstyle(IWorkbook wb, stylexls str)

{

ICellStyle cellStyle = wb.CreateCellStyle();

//定义几种字体

//也可以一种字体,写一些公共属性,然后在下面需要时加特殊的

IFont font12 = wb.CreateFont();

font12.FontHeightInPoints = 10;

font12.FontName = "微软雅黑";

IFont font = wb.CreateFont();

font.FontName = "微软雅黑";

//font.Underline = 1;下划线

IFont fontcolorblue = wb.CreateFont();

fontcolorblue.Color = HSSFColor.OLIVE_GREEN.BLUE.index;

fontcolorblue.IsItalic = true;//下划线

fontcolorblue.FontName = "微软雅黑";

//边框

cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.DOTTED;

cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.HAIR;

cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.HAIR;

cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.DOTTED;

//边框颜色

cellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;

cellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;

//背景图形,我没有用到过。感觉很丑

//cellStyle.FillBackgroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;

//cellStyle.FillForegroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;

cellStyle.FillForegroundColor = HSSFColor.WHITE.index;

// cellStyle.FillPattern = FillPatternType.NO_FILL;

cellStyle.FillBackgroundColor = HSSFColor.BLUE.index;

//水平对齐

cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT;

//垂直对齐

cellStyle.VerticalAlignment = VerticalAlignment.CENTER;

//自动换行

cellStyle.WrapText = true;

//缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对

cellStyle.Indention = 0;

//上面基本都是设共公的设置

//下面列出了常用的字段类型

switch (str)

{

case stylexls.头:

// cellStyle.FillPattern = FillPatternType.LEAST_DOTS;

cellStyle.SetFont(font12);

break;

case stylexls.时间:

IDataFormat datastyle = wb.CreateDataFormat();

cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");

cellStyle.SetFont(font);

break;

case stylexls.数字:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");

cellStyle.SetFont(font);

break;

case stylexls.钱:

IDataFormat format = wb.CreateDataFormat();

cellStyle.DataFormat = format.GetFormat("¥#,##0");

cellStyle.SetFont(font);

break;

case stylexls.url:

fontcolorblue.Underline = 1;

cellStyle.SetFont(fontcolorblue);

break;

case stylexls.百分比:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");

cellStyle.SetFont(font);

break;

case stylexls.中文大写:

IDataFormat format1 = wb.CreateDataFormat();

cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");

cellStyle.SetFont(font);

break;

case stylexls.科学计数法:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");

cellStyle.SetFont(font);

break;

case stylexls.默认:

cellStyle.SetFont(font);

break;

}

return cellStyle;

}

#endregion

--------------------------------------------------------------------------------

提示:1.以上使用npoi版本为1.2.5版本,版本目前属于最高版本,跟以前版本的使用是有些差别的。

2.使用以上代码,需要添加两个npoi的dll。Ionic.Zip.dll,NPOI.dll

【使用Npoi操作excel的解决办法】相关文章:

使用Http Head方法获取文件长度的实现方法详解

C#对XML文件的各种操作实现方法

C# WinForm中Panel实现用鼠标操作滚动条的实例方法

C#操作注册表的方法

C#利用com操作excel释放进程的解决方法

深入C#中使用SqlDbType.Xml类型参数的使用详解

解析StreamReader与文件乱码问题的解决方法

c#解压文件的实例方法

使用checked语句防止数据溢出的解决方法

C# 使用匿名函数解决EventHandler参数传递的难题

精品推荐
分类导航