zoukankan      html  css  js  c++  java
  • WEB使用NPOI导出Excle

    1、到官网下载NPOI组件

    http://npoi.codeplex.com/releases

    2、在使用中的实例

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Data;
      4 using System.Diagnostics;
      5 using System.Drawing;
      6 using System.IO;
      7 using System.Linq;
      8 using System.Web;
      9 using System.Web.UI;
     10 using System.Web.UI.WebControls;
     11 using Microsoft.Win32;
     12 using NPOI.HSSF.UserModel;
     13 using System.IO;
     14 using NPOI.HPSF;
     15 using NPOI.SS.UserModel;
     16 using NPOI.HSSF.Util;
     17 using NPOI;
     18 using NPOI.HPSF;
     19 using NPOI.HSSF;
     20 using NPOI.HSSF.UserModel;
     21 using NPOI.HSSF.Util;
     22 using NPOI.POIFS;
     23 using NPOI.Util;
     24 using System.Text; 
     25 
     26 namespace CloudCustoms.jiekou
     27 {
     28     public partial class IKEAList : System.Web.UI.Page
     29     {
     30         static HSSFWorkbook hssworkbook;
     31 
     32         
     33         /// <summary>
     34         /// 下载生成的RAR文件
     35         /// </summary>
     36         private void DownloadRAR(string file)
     37         {
     38             FileInfo fileInfo = new FileInfo(file);
     39             Response.Clear();
     40             Response.ClearContent();
     41             Response.ClearHeaders();
     42             Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name);
     43             Response.AddHeader("Content-Length", fileInfo.Length.ToString());
     44             Response.AddHeader("Content-Transfer-Encoding", "binary");
     45             Response.ContentType = "application/octet-stream";
     46             Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
     47             Response.WriteFile(fileInfo.FullName);
     48             Response.Flush();
     49             string tempPath = file.Substring(0, file.LastIndexOf(".rar"));
     50             //删除临时目录下的所有文件
     51             DeleteFiles(tempPath);
     52             //删除空目录
     53             Directory.Delete(tempPath);
     54             //删除压缩文件
     55             File.Delete(file);
     56 
     57             Response.End();
     58         }
     59 
     60 
     61 
     62 
     63         //导出Excle
     64         protected void btnExportExcle_Click(object sender, EventArgs e)
     65         {
     66             #region 声明新的表格和SHEET
     67             hssworkbook = new HSSFWorkbook();
     68 
     69             DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
     70             dsi.Company = "KeYue Team";
     71             hssworkbook.DocumentSummaryInformation = dsi;
     72 
     73             SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
     74             si.Subject = "IKEA Infomation";
     75             hssworkbook.SummaryInformation = si;
     76 
     77             HSSFSheet sheet1 = (HSSFSheet)hssworkbook.CreateSheet("IKEA Information");
     78             HSSFRow row;
     79             HSSFCell cell; 
     80             #endregion
     81             string TempID = string.Empty;
     82 
     83             
     84 
     85             #region 循环获取选中的ID
     86             for (int i = 0; i < gv_ikealist.Rows.Count; i++)
     87             {
     88                 CheckBox cb = gv_ikealist.Rows[i].Cells[0].FindControl("ckbSelect") as CheckBox;
     89                 if (cb.Checked)
     90                 {
     91                     HiddenField hidfield = gv_ikealist.Rows[i].Cells[0].FindControl("hidvalue") as HiddenField;
     92                     if (hidfield != null)
     93                         TempID += "'" + hidfield.Value + "',";
     94                 }
     95             } 
     96             #endregion
     97 
     98 
     99             //找出dt数据  
    100             if (!string.IsNullOrEmpty(TempID))
    101             {
    102                 DataTable dt = new DataTable();
    103                 dt = HsListBind(" and id in(" + TempID.Substring(0, TempID.Length - 1) + ")", 1, 10);
    104 
    105                 #region 创建表头
    106                 row = (HSSFRow)sheet1.CreateRow(0);
    107                 row.HeightInPoints = 60;   //行高
    108                 //1、集装箱号
    109                 cell = (HSSFCell)row.CreateCell(0);
    110                 cell.SetCellValue(String.Format("集装箱号
    Container"));
    111                 cell.CellStyle = SetHeadStyle();
    112                 //2、运输号
    113                 cell = (HSSFCell)row.CreateCell(1);
    114                 cell.SetCellValue(String.Format("运输号
    Ship ID"));
    115                 cell.CellStyle = SetHeadStyle();
    116                 //3、装箱日期
    117                 cell = (HSSFCell)row.CreateCell(2);
    118                 cell.SetCellValue(String.Format("装箱日期
    Loading Date"));
    119                 cell.CellStyle = SetHeadStyle();
    120                 //4、货物批号
    121                 cell = (HSSFCell)row.CreateCell(3);
    122                 cell.SetCellValue(String.Format("货物批号
    CSM ID"));
    123                 cell.CellStyle = SetHeadStyle();
    124                 //5、运单
    125                 cell = (HSSFCell)row.CreateCell(4);
    126                 cell.SetCellValue(String.Format("运单
    SWB"));
    127                 cell.CellStyle = SetHeadStyle();
    128                 //6、船名
    129                 cell = (HSSFCell)row.CreateCell(5);
    130                 cell.SetCellValue(String.Format("船名
    Vessel"));
    131                 cell.CellStyle = SetHeadStyle();
    132                 //7、航次
    133                 cell = (HSSFCell)row.CreateCell(6);
    134                 cell.SetCellValue(String.Format("航次
    Voyage"));
    135                 cell.CellStyle = SetHeadStyle();
    136                 //8、起运码头
    137                 cell = (HSSFCell)row.CreateCell(7);
    138                 cell.SetCellValue(String.Format("起运码头
    POL"));
    139                 cell.CellStyle = SetHeadStyle();
    140                 //9、发货人
    141                 cell = (HSSFCell)row.CreateCell(8);
    142                 cell.SetCellValue(String.Format("发货人
    Sender"));
    143                 cell.CellStyle = SetHeadStyle();
    144                 //10、收货人
    145                 cell = (HSSFCell)row.CreateCell(9);
    146                 cell.SetCellValue(String.Format("收货人
    Receiver"));
    147                 cell.CellStyle = SetHeadStyle();
    148                 //11、船公司
    149                 cell = (HSSFCell)row.CreateCell(10);
    150                 cell.SetCellValue(String.Format("船公司
    Carrier"));
    151                 cell.CellStyle = SetHeadStyle();
    152                 //12、开船日期
    153                 cell = (HSSFCell)row.CreateCell(11);
    154                 cell.SetCellValue(String.Format("开船日期
    On Board Date"));
    155                 cell.CellStyle = SetHeadStyle();
    156                 //13、产地证书上传日期
    157                 cell = (HSSFCell)row.CreateCell(12);
    158                 cell.SetCellValue(String.Format("产地证书扫描上传系统日期
    scanned COO upload date"));
    159                 cell.CellStyle = SetHeadStyle();
    160                 //14、产地证寄出日期
    161                 cell = (HSSFCell)row.CreateCell(13);
    162                 cell.SetCellValue(String.Format("产地证寄出日期
    COO send out date"));
    163                 cell.CellStyle = SetHeadStyle();
    164                 //15、产地证收到日期
    165                 cell = (HSSFCell)row.CreateCell(14);
    166                 cell.SetCellValue(String.Format("产地证收到日期
    COO received date"));
    167                 cell.CellStyle = SetHeadStyle();
    168                 //16、快递单号
    169                 cell = (HSSFCell)row.CreateCell(15);
    170                 cell.SetCellValue(String.Format("快递单号
    Courier tracking number"));
    171                 cell.CellStyle = SetHeadStyle();
    172                 //17、证书数量
    173                 cell = (HSSFCell)row.CreateCell(16);
    174                 cell.SetCellValue(String.Format("证书数量
    Certificate quantity"));
    175                 cell.CellStyle = SetHeadStyle();
    176                 //18、证书号码
    177                 cell = (HSSFCell)row.CreateCell(17);
    178                 cell.SetCellValue(String.Format("证书号码
    Certificate number"));
    179                 cell.CellStyle = SetHeadStyle();
    180 
    181                 #endregion
    182 
    183                 #region 循环写数据
    184                 for (int i = 0; i < dt.Rows.Count; i++)
    185                 {
    186                     row = (HSSFRow)sheet1.CreateRow(i + 1);    //循环得到一个新的行
    187                     row.HeightInPoints = 15;        //行高
    188 
    189                     for (int j = 0; j < 18; j++)    //创建列,并且插入数据
    190                     {
    191                         cell = (HSSFCell)row.CreateCell(j);
    192                         cell.CellStyle = SetRowStyle();
    193 
    194                         try
    195                         {
    196                             DateTime dttime = Convert.ToDateTime(dt.Rows[i][j + 2].ToString());
    197                             cell.SetCellValue(String.Format(dttime.ToString("yyyy年MM月dd日")));
    198                         }
    199                         catch (Exception)
    200                         {
    201                             cell.SetCellValue(String.Format(dt.Rows[i][j + 2].ToString().Trim()));
    202                         }
    203                     }
    204                 }
    205                 #endregion
    206 
    207                 #region 设置列宽度
    208 
    209                 #region 自适应宽度
    210                 //for (int columnNum = 0; columnNum < 18; columnNum++)
    211                 //{
    212                 //    int ColumnWidth = sheet1.GetColumnWidth(columnNum) / 256;
    213                 //    for (int rowNum = 1; rowNum < sheet1.LastRowNum; rowNum++)
    214                 //    {
    215                 //        IRow currentrow = sheet1.GetRow(rowNum);
    216                 //        ICell currentcell = currentrow.GetCell(columnNum);
    217                 //        int length = Encoding.UTF8.GetBytes(currentcell.ToString()).Length;
    218 
    219                 //        if (ColumnWidth < length + 1)
    220                 //            ColumnWidth = length + 1;
    221                 //    }
    222                 //    sheet1.SetColumnWidth(columnNum, ColumnWidth * 256);
    223                 //} 
    224                 #endregion
    225                 sheet1.SetColumnWidth(0, 15 * 256);   //集装箱号
    226                 sheet1.SetColumnWidth(1, 17 * 256);   //运输号
    227                 sheet1.SetColumnWidth(2, 16 * 256);   //装箱日期
    228                 sheet1.SetColumnWidth(3, 18 * 256);   //货物批号
    229                 sheet1.SetColumnWidth(4, 16 * 256);   //运单
    230                 sheet1.SetColumnWidth(5, 19 * 256);   //船名
    231                 sheet1.SetColumnWidth(6, 13 * 256);   //航次
    232                 sheet1.SetColumnWidth(7, 14 * 256);   //起运码头
    233                 sheet1.SetColumnWidth(8, 14 * 256);   //发货人
    234                 sheet1.SetColumnWidth(9, 13 * 256);   //收货人
    235                 sheet1.SetColumnWidth(10, 14 * 256);  //船公司
    236                 sheet1.SetColumnWidth(11, 16 * 256);  //开船日期
    237                 sheet1.SetColumnWidth(12, 16 * 256);  //产地证书上传日期
    238                 sheet1.SetColumnWidth(13, 16 * 256);  //产地证书寄出日期
    239                 sheet1.SetColumnWidth(14, 16 * 256);  //产地证书收到日期
    240                 sheet1.SetColumnWidth(15, 20 * 256);  //快递单号
    241                 sheet1.SetColumnWidth(16, 14 * 256);  //证书数量
    242                 sheet1.SetColumnWidth(17, 20 * 256);  //证书号码 
    243                 #endregion
    244 
    245                 string filePath = Server.MapPath(@"../Files/IKEA_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
    246                 WriteToFile(filePath);
    247             }
    248             else
    249             {
    250                 Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('没有相关数据,无法导出表格!');</script>");
    251             }
    252         }
    253 
    254 
    255 
    256         private HSSFCellStyle SetHeadStyle()
    257         {
    258             HSSFCellStyle headStyle = (HSSFCellStyle)hssworkbook.CreateCellStyle();
    259             headStyle.Alignment = HorizontalAlignment.Center;    //左右居中
    260             headStyle.VerticalAlignment = VerticalAlignment.Center;    //上下居中
    261             headStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
    262             headStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
    263             headStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
    264             headStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
    265 
    266             HSSFFont font = (HSSFFont)hssworkbook.CreateFont();
    267             font.FontHeightInPoints = 11;
    268             font.Boldweight = 700;
    269             headStyle.SetFont(font);
    270             headStyle.WrapText = true;    //加了之后,单元格内换行会起作用
    271 
    272             return headStyle;
    273         }
    274 
    275 
    276         private HSSFCellStyle SetRowStyle()
    277         {
    278             HSSFCellStyle rowStyle = (HSSFCellStyle)hssworkbook.CreateCellStyle();
    279             rowStyle.Alignment = HorizontalAlignment.Center;    //左右居中
    280             rowStyle.VerticalAlignment = VerticalAlignment.Center;    //上下居中
    281             rowStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
    282             rowStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
    283             rowStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
    284             rowStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
    285 
    286             HSSFFont font = (HSSFFont)hssworkbook.CreateFont();
    287             font.FontHeightInPoints = 10;
    288             rowStyle.SetFont(font);
    289 
    290             return rowStyle;
    291         }
    292 
    293 
    294 
    295         private void WriteToFile(string filePath)
    296         {
    297             //写文件
    298             FileStream file = new FileStream(filePath, FileMode.Create);
    299             hssworkbook.Write(file);
    300             file.Close();
    301 
    302 
    303             //下载
    304             FileInfo fileInfo = new FileInfo(filePath);
    305             Response.Clear();
    306             Response.ClearContent();
    307             Response.ClearHeaders();
    308             Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name);
    309             Response.AddHeader("Content-Length", fileInfo.Length.ToString());
    310             Response.AddHeader("Content-Transfer-Encoding", "binary");
    311             Response.ContentType = "application/octet-stream";
    312             Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
    313             Response.WriteFile(fileInfo.FullName);
    314             Response.Flush();
    315             string tempPath = filePath.Substring(0, filePath.LastIndexOf(".xls"));
    316 
    317             //删除文件
    318             File.Delete(filePath);
    319 
    320             Response.End();
    321         }
    322 
    323     }
    324 }
  • 相关阅读:
    array and ram
    char as int
    pointer of 2d array and address
    Install SAP HANA EXPRESS on Google Cloud Platform
    Ubuntu remount hard drive
    Compile OpenSSL with Visual Studio 2019
    Install Jupyter notebook and tensorflow on Ubuntu 18.04
    Build OpenCV text(OCR) module on windows with Visual Studio 2019
    Reinstall VirtualBox 6.0 on Ubuntu 18.04
    Pitfall in std::vector<cv::Mat>
  • 原文地址:https://www.cnblogs.com/Johnfx-home/p/5786366.html
Copyright © 2011-2022 走看看