溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

NPOI 操作Excel

發(fā)布時間:2020-07-20 16:55:43 來源:網(wǎng)絡(luò) 閱讀:1009 作者:AESCR 欄目:編程語言

一 創(chuàng)建//讀取工作薄(xls/xlsx)

IWorkbook workbook = new HSSFWorkbook();  //用于創(chuàng)建 .xls
IWorkbook workbook= new XSSFWorkbook();  //用于創(chuàng)建 .xlsx
//讀取
 if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                    workbook = new XSSFWorkbook(fs);
 else if (fileName.IndexOf(".xls") > 0) // 2003版本
                    workbook = new HSSFWorkbook(fs);

二 創(chuàng)建/切換工作表

ISheet workbook = workbook.CreateSheet("SheetName");
//切換
ISheet sheet= workbook.GetSheet("SheetName");

三 創(chuàng)建/獲取Sheet中的Row

 IRow row = sheet.CreateRow(0);
//獲取row 
 IRow row = sheet.GetRow(0);

四 創(chuàng)建/獲取單元格

 ICell cell=row.CreateCell(0);
    //獲取
 ICell cell= row.GetCell(0);

五 合并單元格

 sheet.AddMergedRegion(newCellRangeAddress(開始行,結(jié)束行,開始列,結(jié)束列));

六 設(shè)置列寬

sheet.SetColumnWidth(列索引,N*256) 第二個參數(shù)是列寬 單位是1/256個字符寬度

七 設(shè)置行高 Height的單位是1/20個點

row.Height=50*20; //設(shè)置高度為50個點 

八 設(shè)置樣式

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;

九 設(shè)置單元格邊框

ICellStyle BorderStyle = myworkbook.CreateCellStyle(); BorderStyle .BorderBottom = BorderStyle.Thin;//設(shè)置單元格低邊框為細(xì)線
//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細(xì)線
BorderStyle1.BorderDiagonal = BorderDiagonal.Backward;//反向【Forward正向;Both兩條線】
BorderStyle1.BorderDiagonalColor = IndexedColors.Red.Index;//紅線

十 設(shè)置單元格數(shù)字格式

//創(chuàng)建CellStyle與DataFormat并加載格式樣式  
IDataFormat dataformat = myworkbook.CreateDataFormat();
ICellStyle Numstyle = myworkbook.CreateCellStyle();
Numstyle.DataFormat = dataformat.GetFormat("[DbNum2][$-804]General");//轉(zhuǎn)化為漢字大寫
// dataformat.GetFormat("0.0"); //改變小數(shù)精度【小數(shù)點后有幾個0表示精確到小數(shù)點后幾位】 
//dataformat.GetFormat("#,##0.0");//分段添加,號
//dataformat.GetFormat("0.00E+00");//科學(xué)計數(shù)法
//dataformat.GetFormat("0.00;[Red]-0.00");//正數(shù)與負(fù)數(shù)的區(qū)分【負(fù)數(shù)為紅色】
//dataformat.GetFormat("# ??/??");//整數(shù)部分+分?jǐn)?shù)
//dataformat.GetFormat("??/??");//分?jǐn)?shù)
//dataformat.GetFormat("0.00%");//百分?jǐn)?shù)【小數(shù)點后有幾個0表示精確到顯示小數(shù)點后幾位】

十一 設(shè)置單元格時間格式

//創(chuàng)建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 秒數(shù)零起始;s 秒數(shù)非零起始  
// 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 下午】

十二 設(shè)置單元格文本格式

IDataFormat dataformat = myworkbook.CreateDataFormat();
 ICellStyle Textstyle = myworkbook.CreateCellStyle(); Textstyle.DataFormat = dataformat.GetFormat("@");

十三 插入圖片

//第一步:讀取圖片到byte數(shù)組  
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數(shù)組中的索引地址(從1開始)  
int pictureIdx = myworkbook.AddPicture(bytes, PictureType.JPEG);

//第三步:在sheet中創(chuàng)建畫部  
IDrawing patriarch = mysheet.CreateDrawingPatriarch();
//第四步:設(shè)置錨點 (在起始單元格的X坐標(biāo)0-1023,Y的坐標(biāo)0-255,在終止單元格的X坐標(biāo)0-1023,Y的坐標(biāo)0-255,起始單元格行數(shù),列數(shù),終止單元格行數(shù),列數(shù))  
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 0, 0, 2, 2);
//第五步:創(chuàng)建圖片  
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);

最后一步

FileStream file = new FileStream(@"D:\CreateExcel.xls", FileMode.Create);
myworkbook.Write(file);
file.Close();

示例代碼

 //創(chuàng)建Xlsx工作薄
            XSSFWorkbook workbook2007=new XSSFWorkbook();

            //創(chuàng)建工作表
            workbook2007.CreateSheet("第一個工作表");
            //寫數(shù)據(jù)流程 讀取(或新建一個工作簿)->獲取工作表->對工作表添加行->對每一行添加單元格->對單元格賦值
            //獲取工作表-第一個工作表
            XSSFSheet sheet = (XSSFSheet) workbook2007.GetSheet("第一個工作表");
            //創(chuàng)建一個標(biāo)題(一行數(shù)據(jù))
            sheet.CreateRow(0);
            //獲取第一行
            XSSFRow Xr=(XSSFRow)sheet.GetRow(0);
            //創(chuàng)建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("這是標(biāo)題");
            //樣式
            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();

參考網(wǎng)站:
https://www.cnblogs.com/zqyw/p/7462561.html
https://www.jianshu.com/p/6ccf675b362a
https://www.cnblogs.com/houlin/p/5202160.html

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI