NPOI 操作Excel

一 创建//读取工作薄(xls/xlsx)

IWorkbook workbook = new HSSFWorkbook(); //用于创建 .xls
IWorkbook workbook= new XSSFWorkbook(); //用于创建 .xlsx
//读取
if (fileName.IndexOf(".xlsx") > 0) // 2007版本
workbook = new XSSFWorkbook(fs);
else if (fileName.IndexOf(".xls") > 0) // 2003版本
workbook = new HSSFWorkbook(fs);
二 创建/切换工作表

ISheet workbook = workbook.CreateSheet(“SheetName”);
//切换
ISheet sheet= workbook.GetSheet(“SheetName”);
三 创建/获取Sheet中的Row

IRow row = sheet.CreateRow(0);
//获取row
IRow row = sheet.GetRow(0);
四 创建/获取单元格

ICell cell=row.CreateCell(0);
//获取
ICell cell= row.GetCell(0);
五 合并单元格

sheet.AddMergedRegion(newCellRangeAddress(开始行,结束行,开始列,结束列));
六 设置列宽

sheet.SetColumnWidth(列索引,N*256) 第二个参数是列宽 单位是1/256个字符宽度
七 设置行高 Height的单位是1/20个点

row.Height=50*20; //设置高度为50个点
八 设置样式

ICellStyle bodyStyle = workbook2007.CreateCellStyle();
bodyStyle.Alignment =HorizontalAlignment.Center;
bodyStyle.VerticalAlignment =VerticalAlignment.Center;
IFont font1 = workbook.CreateFont();
font1.FontHeight = 10*20;
font1.Color = HSSFColor.Red.Index;//字色
bodyStyle.SetFont(font1);
sheet.CellStyle = bodyStyle;
九 设置单元格边框

ICellStyle BorderStyle = myworkbook.CreateCellStyle(); BorderStyle .BorderBottom = BorderStyle.Thin;//设置单元格低边框为细线
//BorderStyle.Medium;【中等线】
//BorderStyle.Dashed;【虚线】
//BorderStyle.Dotted;【斑点线】
//BorderStyle.Thick;【粗线】
//BorderStyle.Double;【双线】
//BorderStyle.Hair;【多点线】
//BorderStyle.MediumDashed;【中等虚线】
//BorderStyle.DashDot;【点线】
//BorderStyle.MediumDashDot;【中等点线】
//BorderStyle.DashDotDot;【双点划线】
//BorderStyle.MediumDashDotDot;【中等双点划线】
//BorderStyle.SlantedDashDot;【倾斜的点划线】
ICellStyle BorderStyle1 = myworkbook.CreateCellStyle();
BorderStyle1.BorderDiagonalLineStyle = BorderStyle.Thin;//BorderDiagonalLineStyle对角线样式 Thin细线
BorderStyle1.BorderDiagonal = BorderDiagonal.Backward;//反向【Forward正向;Both两条线】
BorderStyle1.BorderDiagonalColor = IndexedColors.Red.Index;//红线
十 设置单元格数字格式

//创建CellStyle与DataFormat并加载格式样式
IDataFormat dataformat = myworkbook.CreateDataFormat();
ICellStyle Numstyle = myworkbook.CreateCellStyle();
Numstyle.DataFormat = dataformat.GetFormat("[DbNum2][$-804]General");//转化为汉字大写
// dataformat.GetFormat(“0.0”); //改变小数精度【小数点后有几个0表示精确到小数点后几位】
//dataformat.GetFormat("#,##0.0");//分段添加,号
//dataformat.GetFormat(“0.00E+00”);//科学计数法
//dataformat.GetFormat(“0.00;[Red]-0.00”);//正数与负数的区分【负数为红色】
//dataformat.GetFormat("# ??/??");//整数部分+分数
//dataformat.GetFormat("??/??");//分数
//dataformat.GetFormat(“0.00%”);//百分数【小数点后有几个0表示精确到显示小数点后几位】
十一 设置单元格时间格式

//创建CellStyle与DataFormat并加载格式样式
IDataFormat dataformat = myworkbook.CreateDataFormat();
//【Tips】
// 1.yyyy 年份; yy 年份后两位
// 2.MM 月份零起始;M 月份非零起始; mmm[英文月份简写];mmmm[英文月份全称]
// 3.dd 日零起始;d 日非零起始
// 4.hh 小时零起始;h 小时非零起始[用于12小时制][12小时制必须在时间后面添加 AM/PM 或 上午/下午]
// 5.HH 小时零起始;H 小时非零起始[用于24小时制]
// 6.mm 分钟零起始;m 分钟非零起始
// 7.ss 秒数零起始;s 秒数非零起始
// 8.dddd 星期;ddd 星期缩写【英文】
// 9.aaaa 星期;aaa 星期缩写【中文】
ICellStyle Timestyle = myworkbook.CreateCellStyle();
Timestyle.DataFormat = dataformat.GetFormat(“yyyy年MM月dd日 aaaa”);【2017年09月01日 星期五】
//dataformat.GetFormat(“yyyy年MM月dd日 dddd”);【2017年09月01年 Friday】
//dataformat.GetFormat(“h:mm:ss AM/PM”);【3:51:21 PM】
//dataformat.GetFormat(“h:mm:ss 上午/下午”);【3:51:21 下午】
十二 设置单元格文本格式

IDataFormat dataformat = myworkbook.CreateDataFormat();
ICellStyle Textstyle = myworkbook.CreateCellStyle(); Textstyle.DataFormat = dataformat.GetFormat("@");
十三 插入图片

//第一步:读取图片到byte数组
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“http://img1.soufunimg.com/message/images/card/tuanproj/201511/2015112703584458_s.jpg”);
byte[] bytes;
using (Stream stream = request.GetResponse().GetResponseStream())
{
using (MemoryStream mstream = new MemoryStream())
{
int count = 0;
byte[] buffer = new byte[1024];
int readNum = 0;
while ((readNum = stream.Read(buffer, 0, 1024)) > 0)
{
count = count + readNum;
mstream.Write(buffer, 0, 1024);
}
mstream.Position = 0;
using (BinaryReader br = new BinaryReader(mstream))
{

                    bytes = br.ReadBytes(count);
                }
            }
        }

//第二步:将图片添加到workbook中 指定图片格式 返回图片所在workbook->Picture数组中的索引地址(从1开始)
int pictureIdx = myworkbook.AddPicture(bytes, PictureType.JPEG);

//第三步:在sheet中创建画部
IDrawing patriarch = mysheet.CreateDrawingPatriarch();
//第四步:设置锚点 (在起始单元格的X坐标0-1023,Y的坐标0-255,在终止单元格的X坐标0-1023,Y的坐标0-255,起始单元格行数,列数,终止单元格行数,列数)
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 0, 0, 2, 2);
//第五步:创建图片
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
最后一步

FileStream file = new FileStream(@“D:\CreateExcel.xls”, FileMode.Create);
myworkbook.Write(file);
file.Close();
示例代码

//创建Xlsx工作薄
XSSFWorkbook workbook2007=new XSSFWorkbook();

        //创建工作表
        workbook2007.CreateSheet("第一个工作表");
        //写数据流程 读取(或新建一个工作簿)->获取工作表->对工作表添加行->对每一行添加单元格->对单元格赋值
        //获取工作表-第一个工作表
        XSSFSheet sheet = (XSSFSheet) workbook2007.GetSheet("第一个工作表");
        //创建一个标题(一行数据)
        sheet.CreateRow(0);
        //获取第一行
        XSSFRow Xr=(XSSFRow)sheet.GetRow(0);
        //创建11行单元格 
        XSSFCell[] SheetCell=new XSSFCell[11];
        for (int i = 0; i < 11; i++)
        {
            SheetCell[i]=(XSSFCell)Xr.CreateCell(i);
        }
        //合并单元格
        sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
        //赋值
        SheetCell[0].SetCellValue("这是标题");
        //样式
        ICellStyle bodyStyle = workbook2007.CreateCellStyle();
        bodyStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
        bodyStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
        IFont font1 = workbook2007.CreateFont();
        font1.FontHeight = 10*20;
        font1.Color = HSSFColor.Red.Index;//字色
        bodyStyle.SetFont(font1);
        SheetCell[0].CellStyle = bodyStyle;

        //保存
        FileStream file2007 = new FileStream("Excel2007.xlsx", FileMode.Create);
        workbook2007.Write(file2007);
        file2007.Close();
        workbook2007.Close();
        深圳网站建设www.sz886.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值