1. 程式人生 > >用NPOI外掛把GridView上的圖片匯出到Excel的記錄

用NPOI外掛把GridView上的圖片匯出到Excel的記錄

using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.DDF;
using NPOI.SS.UserModel;
using System.IO;
using System.Data;

protected void Button2_Click(object sender, EventArgs e)
        {
           //呼叫儲存過程
            SqlConnection conn = new SqlConnection(connectionString);
            conn.Open();
            SqlCommand cmd = new SqlCommand("儲存過程名",conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@引數1", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@引數2", SqlDbType.VarChar,50);
      cmd.Parameters["@引數1"].Value = DropDownList1.SelectedValue;
            cmd.Parameters["@引數2"].Value = TextBox1.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            string excelname = System.DateTime.Now.ToString().Replace(":", "").Replace("-", "").Replace(" ", "");
            string filePath = System.Web.HttpContext.Current.Server.MapPath("ReadExcel") + "\\" + excelname + ".xls";
            MemoryStream ms = RenderDataTableToExcel(dt) as MemoryStream;
            FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
            byte[] data = ms.ToArray();
            fs.Write(data, 0, data.Length);
            fs.Flush();
            fs.Close();
            data = null;
            ms = null;
            fs = null;
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.AppendHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(excelname, System.Text.Encoding.UTF8) + ".xls");
            Response.ContentType = "Application/excel";
            Response.WriteFile(filePath);
            Response.End();
           
        }
        public Stream RenderDataTableToExcel(DataTable SourceTable)
        {

            MemoryStream ms = new MemoryStream();
            NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
            NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet();
            NPOI.SS.UserModel.IRow headerRow = sheet.CreateRow(0);
            sheet.SetColumnWidth(1, 100);
            headerRow.CreateCell(0).SetCellValue("編號");
            headerRow.CreateCell(1).SetCellValue("圖片");
            int rowIndex = 1;
            foreach (DataRow row in SourceTable.Rows)
            {
                NPOI.SS.UserModel.IRow dataRow = sheet.CreateRow(rowIndex);
                dataRow.Height = 200;
                dataRow.CreateCell(0).SetCellValue(row["id"].ToString());             
                if (row["image"].ToString() != "" )
                {
                    byte[] bytes = System.IO.File.ReadAllBytes(row["image"].ToString());
                    int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
                    HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
                    HSSFClientAnchor anchor = new HSSFClientAnchor(88, 20, 0, 0, 1, rowIndex, 2, rowIndex + 1);
                    HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);   
                }
                rowIndex++;
            }
            workbook.Write(ms);
            ms.Flush();
            ms.Position = 0;
            sheet = null;
            headerRow = null;
            workbook = null;
            return ms;
        }

感謝三位博主的知識分享,在看我的文章之前可以先參考三位博主的文章。

相關推薦

NPOI外掛GridView圖片匯出Excel記錄

using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.DDF; using NPOI.SS.UserModel; using System.IO; using System.Data; protected

如何用EGit外掛github的專案clone到eclipse

導讀:本篇主要介紹如何使用EGit下載GitHub上已存在的庫。如果不是為了下載一個Java Project,直接在Eclipse中匯入使用,那可以使用GitHub的桌面程式(GitHub for Windows),這個上傳下載檔案更方便。建議看這篇文章之前先看這篇——

C# 將圖片匯出Excel(包括 建立Excel 、檔案壓縮、遞迴刪除檔案及資料夾)

新增引用 using ICSharpCode.SharpZipLib.Zip;   public void CreateDirectory(string DirectoryPath) { if (!Directory.Exist

一個php檔案就可以資料庫的資料匯出Excel表格

資料庫內容太多,複製貼上太麻煩?那就用程式碼實現把,把程式碼寫好了,匯出還不容易嗎,訪問即可匯出。 excel.php <?php error_reporting(E_ALL ^ E_DEPRECATED); $localhost = '資料庫地址'; $dbnam

網頁實現匯出excel表格時,怎樣在後臺生成excel後,讓表格在瀏覽器中自動下載(larval框架)

Html程式碼片段: <form method="post" id="export_form" action="action" style="float: left">     <input id="export_info" type="hidden" n

springBoot 使用easypoi,在linux伺服器無法 匯出excel問題

使用的框架 excel工具 文件 http://www.afterturn.cn/doc/easypoi.html 根據文件,在windows上實現了excel下載功能,也是正常的。 但放在linux伺服器上時,無法載入到excel模版 報錯資訊 2018-02-28 1

@程式設計師,你們還在網上亂找的方法匯入匯出Excel麼,我們給你造了個輪子!!!!!

程式設計師的顯著特點 有一天跟一位同事跟我閒聊,討論起過去若干年軟體行業的感受,他問了個問題:你覺得一個好的軟體工程師最顯著的特點是什麼? 我想了一會,說:大概是坐得住吧。 某種意義上來說,在網際網路技術飛速發展的今天,資訊的洪流總是無聲無息間把我們掩埋,一不小心,可能就感覺自己似乎已經out了。 當然,資訊

Vue2.0 引用 exif.js 實現調攝像頭進行拍照功能以及圖片傳功能

[0 complete num else imp ada blob can isf vue組件代碼 <template> <div> <div style="padding:20px;"> <div cla

megapix-image外掛 使用Canvas壓縮圖片傳 MegaPixImage.js下載

MegaPixImage.js下載地址 <!DOCTYPE html > <html> <head> <title>通過Canvas及File API縮放並上傳圖片</title> <script

原生JS實現多張圖片傳及預覽功能(相容IE8)

最近需要做一個圖片上傳預覽的功能(相容IE8-11、chrome、firefox等瀏覽器),網上現有的檔案上傳元件(如webuploader)總是會遇到一些相容性問題。於是我參考了一些博文(連結找不到了⊙o⊙…),自己用原生JS寫了一個支援多張圖片上傳預覽功能的Demo 先通過最終效果看一下功能:

NPOI匯出Excel中修改格式,傳輸圖片

一、使用NPOI設定背景色 方法一:使用NOPI自帶的顏色使用方法,缺點就是自帶的樣色種類少,不夠用 HSSFWorkbook hssfworkbook = new HSSFWorkbook();//建立工作薄 styleCommonTextRedColor = hss

HTML5 CSS3 經典案例:無外掛拖拽圖片 (支援預覽與批量) (一)

上傳基本是專案中經常出現的,一般採用:1、form提交 2、flash3、html5form提交會重新整理頁面,很難做到非同步上傳;flash可能是用得比較多了,因為可以兼顧到幾乎所有的瀏覽器,我之前一直會用jquery的uploadify作為專案中的上傳工具,uploadi

放下包袱,能量在往前走

本文記錄我與一名《資料結構基礎》課的網路學員的對話。在終身學習年代,最寶貴的,也是最現實的,就是從現在開始,把能量全用在想要的那個方向,而不是被想像中的,傳說中的哪樣東西絆住。 【學生】   老師 我做php已經四五年了,現在在做c和c++,因為學歷不高,高一就退學了,看了看本套課程

如何在Mac OS X命令列快速的調整圖片大小

如果你使用的是Mac,經常需要調整一批照片的大小,實際上有一個內建工具,可以讓你無需開啟任何影象編輯工具就能搞定。這就是所謂的“SIPS”,是命令列的影象處理工具。它非常容易使用,但你需要知道如何在終端上發揮它的優勢。 簡單地說你想要處理的圖片拷貝到一個目錄中的,在終端cd到該目錄,並執行以下命令

Safari當chrome外掛篇)

1. Markdown Here Write email in Markdown, and then make it pretty. 主頁:http

jquery.fileupload.js外掛使用初探--多圖片傳預覽

 一、前臺程式碼: <!DOCTYPE html> <html> <head> <title>jquery.fileupload.js使用測試</title> <script src="jq

js外掛+UploadFile類實現圖片的批量

        檔案上傳無疑是web應用中一個非常常用的功能,下面小編給大家分享一下diyUpload.js+ThinkPHP中的UploadFile類實現圖片的批量上傳。         首先,給大家介紹展示一下具體操作頁面: html程式碼如下: <div cl

easyui datagrid 增刪改查分頁 匯出傳後匯入 NPOI批量匯入 匯出EXCEL

效果圖資料庫程式碼 create database CardManage use CardManage create table CardManage ( ID int identity(1,1) primary key, userDep nvarchar(10)n

封裝好的okHttp3圖片到介面

首先  ok的兩個依賴: //okhttp compile 'com.squareup.okhttp3:okhttp:3.6.0' compile 'com.squareup.okio:okio:1.11.0'

改造Kindeditor之:自定義圖片外掛。 外加給圖片增加水印效果的選擇。

場景: 編輯部人士編輯文章時需要在文章中上傳圖片。但上傳圖片時需要增加是否增加水印的選擇(有可能是自己公司的原創作品)。所以需要改造Kindeditor . 1: 刪除Kindeitor 預設的引數物件裡的Image  新增自定bareheadimage 有原來的 item