zoukankan      html  css  js  c++  java
  • 数据导入Excel表格

    后台代码:  
    using BLL;
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.IO.MemoryMappedFiles;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    
    namespace EasyUI
    {
        /// <summary>
        /// ExcelHandler 的摘要说明
        /// </summary>
        public class ExcelHandler : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                try
                {
                    DataTable dt = new DataTable();
                    dt = Service.Excel();//数据源
                    string strFileName = "Excel";
                    //创建空excel文件
                    HSSFWorkbook workbook = new HSSFWorkbook();
                    ISheet sheet = string.IsNullOrEmpty(strFileName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(strFileName);
                    //表头
                    IRow row = sheet.CreateRow(0);
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        ICell cell = row.CreateCell(i);
                        cell.SetCellValue(dt.Columns[i].ColumnName);
                        //创建列头的样式
                        HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle();
                        //居中显示
                        cellStyle.Alignment = HorizontalAlignment.Center;
                        //垂直居中
                        cellStyle.VerticalAlignment = VerticalAlignment.Center;
                        HSSFFont font = (HSSFFont)workbook.CreateFont();
                        font.FontHeightInPoints = 12;
                        font.FontName = "宋体";
                        font.IsBold = true;
                        cellStyle.SetFont(font);
                        cell.CellStyle = cellStyle;
                    }
                    //数据
                    int[] len = new int[dt.Columns.Count];
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        //
                        IRow rows = sheet.CreateRow(i + 1);
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            //
                            ICell cell = rows.CreateCell(j);
                            cell.SetCellValue(dt.Rows[i][j].ToString());
                            var lenTemp = dt.Rows[i][j].ToString().Length > dt.Columns[j].ColumnName.Length ? dt.Rows[i][j].ToString().Length : dt.Columns[j].ColumnName.Length;
                            if (lenTemp > len[j])
                            {
                                len[j] = lenTemp;
                            }
                        }
                    }
                    //自动设置列宽
                    for (int i = 0; i < len.Length; i++)
                    {
                        if (len[i] < 8)
                        {
                            len[i] = Convert.ToInt32(Math.Round(len[i] * 2.5));
                        }
                        else
                        {
                            len[i] = Convert.ToInt32(Math.Round(len[i] * 1.3));
                        }
                        sheet.SetColumnWidth(i, len[i] * 256);
                    }
                    string fileName = strFileName + DateTime.Now.ToString("yyMMddHHmmssfff") + ".xls";
                    //写入到客户端
                    MemoryStream ms = new MemoryStream(); //创建其支持存储区为内存的流
                    //数据写入流中
                    workbook.Write(ms);
                    // 设置当前流的位置为流的开始
                    ms.Seek(0, SeekOrigin.Begin);
                    //防止中文乱码
                    fileName = HttpUtility.UrlEncode(fileName);
                    //设置输出编码格式
                    //context.Response.ContentEncoding = System.Text.Encoding.UTF8;
                    //设置输出流
                    context.Response.ContentType = "application/vnd.ms-excel";
                    //// 限制类型 
                    //context.Response.AddHeader("content-type", "application/vnd.ms-excel");
                    //下载后文件名
                    context.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); 
                    workbook = null;
                    ms.Close();
                    ms.Dispose();
                    //实现文件下载
                    context.Response.BinaryWrite(ms.ToArray());
                   
                }
                catch (Exception ex)
    
                {
    
                    context.Response.Write(ex.Message);
    
                }
                //ExportDataSetToExcel(dt, fileName, "sheet1");
            }
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    返回前台后:  window.open("ExcelHandler.ashx");//打开浏览器窗口

    别忘记在项目中引用NPOI

  • 相关阅读:
    HDU 2544 最短路
    HDU 3367 Pseudoforest
    USACO 2001 OPEN
    HDU 3371 Connect the Cities
    HDU 1301 Jungle Roads
    HDU 1879 继续畅通工程
    HDU 1233 还是畅通工程
    HDU 1162 Eddy's picture
    HDU 5745 La Vie en rose
    HDU 5744 Keep On Movin
  • 原文地址:https://www.cnblogs.com/-zzc/p/9603594.html
Copyright © 2011-2022 走看看