久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
uid:83710 日志

NPOI創(chuàng)建Excel以內(nèi)存流下載

已有 4022 次閱讀2015-6-25 17:01 | Excel

     NPOI一個(gè)不依賴Office安裝程序的導(dǎo)入導(dǎo)出Excel與Word動(dòng)態(tài)鏈接庫,去年的時(shí)候在WPF(C/S)上用它做過一個(gè)數(shù)據(jù)庫導(dǎo)入導(dǎo)出Excel的程序。前段時(shí)間看了看發(fā)現(xiàn)根本看不懂了。。。
    記錄一下NPOI在.Net中的使用心得吧。

    功能說明:從數(shù)據(jù)庫中獲取一個(gè)DataTable導(dǎo)出成Excel并發(fā)送到客戶端

    主要步驟:
    1、從數(shù)據(jù)庫獲取并完善DataTable內(nèi)容(刪除不必要的列新增必要的列)
    2、生成*.xls文件并寫入內(nèi)存流
    3、發(fā)送內(nèi)存流到客戶端,形成文件下載

    詳細(xì)說明:
    1、獲取數(shù)據(jù)源
    直接調(diào)用SQL語句獲取數(shù)據(jù)源DataTable就可以了,下面進(jìn)行DataTable數(shù)據(jù)的維護(hù)。
    // 獲取數(shù)據(jù)源(注:數(shù)據(jù)源的來源不做詳細(xì)說明)
    DataTable data = CBLLTransportSendCar.GetSaleReport(time, dQueryDate, out strError);
    // 刪除不必要的列【 i 】為列索引從【0】開始
    data.Columns.RemoveAt(i);
    // 添加新列
    data.Columns.Add("ColumnName",typeof(string));
 

    2、用NPOI創(chuàng)建Excel
    先到NPOI官網(wǎng)下載【*.dll】動(dòng)態(tài)鏈接庫并引入到項(xiàng)目中(引用所有*.dll)
    網(wǎng)址:http://npoi.codeplex.com/  ;
            
    string[] strHead = {"Column1","Column2","Column3"};
    MemoryStream ms = new MemoryStream();
     try
     {
        IWorkbook workbook = new HSSFWorkbook();    // 創(chuàng)建Workbook對(duì)象
         ISheet sheet = workbook.CreateSheet("Sheet1");  // 創(chuàng)建工作表
        // 設(shè)置表頭
         IRow row = sheet.CreateRow(0);  // 創(chuàng)建一行、指定行號(hào)為第一行
         for (int i = 0; i < strHead.Length; i++)
         {
            ICell cell = row.CreateCell(i); // 創(chuàng)建一列
            cell.SetCellValue(strHead[i]);  // 設(shè)置列的內(nèi)容
         }
         // 設(shè)置內(nèi)容
        for (int j = 0; j < dt.Rows.Count; j++)
         {
            IRow rowCotent = sheet.CreateRow(j + 1);
            for (int i = 0; i < strHead.Length; i++)
            {
                ICell cell = rowCotent.CreateCell(i); // 創(chuàng)建一列
                cell.SetCellValue(dt.Rows[j][i].ToString());  // 設(shè)置列的內(nèi)容
             }
         }
        workbook.Write(ms); // Excel寫入內(nèi)存流中
        ms.Flush();
        ms.Position = 0;    // 指定內(nèi)存流起始值
        if (workbook != null)
        {
            workbook.Clear();   // 關(guān)閉
        }
    }
    catch (Exception ex)
    {
    }
    
    3、 發(fā)送流到客戶端以形成下載文件行駛
    如要是下載實(shí)體文件(即存放在服務(wù)器本地的文件)直接鏈接到文件的相對(duì)路徑就可以了,但是此文中的Excel文件則是存放在內(nèi)存流中,需要特殊處理。處理方式很簡(jiǎn)單,就是修改請(qǐng)求的報(bào)頭就可以了,告訴協(xié)議“
我發(fā)送的是一個(gè)文件你丫別把他當(dāng)HTML輸出了!”
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");    // 設(shè)置流的字符編碼,Windows的為【gb2312】
    Response.ContentType = "application/octet-stream";    // 通知協(xié)議說我攜帶的是一個(gè)流不是HTML
    Response.AppendHeader("Content-Disposition", "filename=" + strTitle + "銷售報(bào)表.xls");    // 【filename】說明這個(gè)文件的文件名以及格式
    Response.BinaryWrite(ms.GetBuffer());     // 從內(nèi)存流中以無符號(hào)字節(jié)數(shù)組形式發(fā)送



2014-12-05補(bǔ)充

    今天利用NPOI導(dǎo)出Excel的時(shí)候設(shè)計(jì)到了單元格的合并,很簡(jiǎn)單,只需要一個(gè)方法就可以了。我們先看一下想要的效果
 


    代碼:
    IWorkbook workbook = new HSSFWorkbook();    // 創(chuàng)建Workbook對(duì)象
    ISheet sheet = workbook.CreateSheet("Sheet1");  // 創(chuàng)建工作表
    // 設(shè)置表頭
    IRow row = sheet.CreateRow(0);  // 創(chuàng)建一行
    ICell cell1 = row.CreateCell(0);
    cell1.SetCellValue("機(jī)臺(tái)號(hào)");
    sheet.AddMergedRegion(new CellRangeAddress(0, 1, 0, 0));    // 設(shè)置合并單元格

     
sheet.AddMergedRegion(new CellRangeAddress(firstRowNumber, lastRowNumber, firstColumnNumber, lastRowNumber));

    前兩個(gè)參數(shù)表示從第幾行到第幾行合并,后兩個(gè)參數(shù)表示從第幾列到第幾列合并! 

路過

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部
主站蜘蛛池模板: 久久精品天堂 | 日本三级在线网站 | www.黄网 | 精品一区精品二区 | 激情欧美一区二区三区中文字幕 | 在线视频一区二区三区 | 国产亚洲精品美女久久久久久久久久 | av片在线播放 | 国产精品99久久久精品免费观看 | 欧美一二三区 | 午夜精品久久久久久久99黑人 | 欧美一级免费看 | 国产在线一区二区 | 国产成人精品在线播放 | 久久久久久久久久久久一区二区 | 欧美在线视频二区 | 91一区二区 | 欧美福利在线 | 国产高清在线精品 | 国产国语精品 | 一区二区三区中文字幕 | 午夜精品久久久久久久久久久久 | 国产.com | 久久久久久久99 | 欧美成人性生活 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 国产在线视频一区 | 91精品国产综合久久久久久首页 | 国产中文一区二区三区 | 国产精品国产成人国产三级 | 欧美一区二区三区视频在线播放 | 亚洲综合婷婷 | 久久精品视频播放 | 国产精品色综合 | 国产一区二区三区不卡av | 日韩综合网 | 成人免费视频网站在线观看 | 亚洲国产网| 成人毛片在线视频 | 久久久久久色 | 99国产精品一区二区三区 |