zoukankan      html  css  js  c++  java
  • asp.net JS使用MVC下載(導出Excel)

     本章主要推薦大家一個基於使用asp js MVC架構導出文檔的方法:

    技術中使用到easyui頁面跳轉aspx引用dll文件


    頁面功能:

    HTML Dome:

    JS Dome:

     以上方法調用了一些後台easyui的方法,這裡有很多方式,其目的就是打開新建的一個aspx頁面(僅用於文檔導出)


    新建aspx的頁面:

      文件路徑可以建一個單獨的文件項目:

                    

       打開aspx下的cs項目,這裡需要引用到一些dll:

                          

       必要的二個 using com.innolux.framework.Utility、using com.innolux.framework.Utility.NPOI.HSSF.Record;

        public partial class Excel_Down : System.Web.UI.Page
                {

            

     獲取查詢到dt(SQL數據資料)數據清單;


    ExportByWeb.cs 調用文件導出: 此部分為本章節最終導出的Demo,以上Demo只是個人將查詢到SQL的部分最終調用ExportByWeb.cs文檔導出下載到本地,僅供參考

      使用引用:

        

    ExportByWeb Demo:  

     Export:引用

     Demo:

     

    /// <summary>
    /// DataTable导出到Excel的MemoryStream
    /// </summary>
    /// <param name="dtSource">源DataTable</param>
    /// <param name="strHeaderText">表头文本</param>
    /// <Author>keimzhao</Author>
    public static MemoryStream Export(DataTable dtSource, string strHeaderText)
    {

    IWorkbook workbook = new XSSFWorkbook();

    ISheet sheet = workbook.CreateSheet();

    #region 右击文件 属性信息
    {
      DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
      dsi.Company = "Innolux";
      //workbook.DocumentSummaryInformation = dsi;
      //workbook. = dsi;

      SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
      si.Author = "KEIMZHAO"; //填加xls文件作者信息
      si.ApplicationName = "NPOI程序"; //填加xls文件创建程序信息
      si.LastAuthor = "KEIMZHAO"; //填加xls文件最后保存者信息
      si.Comments = "企業資源資訊管理二課"; //填加xls文件作者信息
      si.Title = "NPOI"; //填加xls文件标题信息
      si.Subject = "NPOI";//填加文件主题信息
      si.CreateDateTime = DateTime.Now;
      //workbook.SummaryInformation = si;
    }
    #endregion

    ICellStyle dateStyle = workbook.CreateCellStyle();
    IDataFormat format = workbook.CreateDataFormat();
    dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");

    //取得列宽
    int[] arrColWidth = new int[dtSource.Columns.Count];
    foreach (DataColumn item in dtSource.Columns)
      {
        arrColWidth[item.Ordinal] = Encoding.GetEncoding(936).GetBytes(item.ColumnName.ToString()).Length;
      }
    for (int i = 0; i < dtSource.Rows.Count; i++)
      {
        for (int j = 0; j < dtSource.Columns.Count; j++)
          {
            int intTemp = Encoding.GetEncoding(936).GetBytes(dtSource.Rows[i][j].ToString()).Length;
            if (intTemp > arrColWidth[j])
              {
                arrColWidth[j] = intTemp;
              }
          }

      }

      int rowIndex = 0;

      foreach (DataRow row in dtSource.Rows)
      {
        #region 新建表,填充表头,填充列头,样式
        if (rowIndex == 65535 || rowIndex == 0)
          {
            if (rowIndex != 0)
              {
                sheet = workbook.CreateSheet();
              }

            #region 表头及样式
            {
             IRow headerRow = sheet.CreateRow(0);
             headerRow.HeightInPoints = 25;
             headerRow.CreateCell(0).SetCellValue(strHeaderText);

        ICellStyle headStyle = workbook.CreateCellStyle();
        //headStyle.Alignment = ICellStyle.ALIGN_CENTER;
        IFont font = workbook.CreateFont();
        font.FontHeightInPoints = 20;
        font.Boldweight = 700;
        headStyle.SetFont(font);

        headerRow.GetCell(0).CellStyle = headStyle;

        sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, dtSource.Columns.Count - 1));
        headerRow = null;
      }
     #endregion


    #region 列头及样式
    {
      IRow headerRow = sheet.CreateRow(1);


      ICellStyle headStyle = workbook.CreateCellStyle();
      //headStyle.Alignment= = ICellStyle.ALIGN_CENTER;
      IFont font = workbook.CreateFont();
      font.FontHeightInPoints = 10;
      font.Boldweight = 700;
      headStyle.SetFont(font);


      foreach (DataColumn column in dtSource.Columns)
        {
          headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
          headerRow.GetCell(column.Ordinal).CellStyle = headStyle;

          //设置列宽
          // sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);
          if (arrColWidth[column.Ordinal] > 255)
            {
              arrColWidth[column.Ordinal] = 254;
            }
          else
            {
              sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);
            }


        }
        headerRow = null;
    }
    #endregion

          rowIndex = 2;
        }
        #endregion


    #region 填充内容
    IRow dataRow = sheet.CreateRow(rowIndex);
    foreach (DataColumn column in dtSource.Columns)
      {
        ICell newCell = dataRow.CreateCell(column.Ordinal);

        string drValue = row[column].ToString();

        switch (column.DataType.ToString())
          {
            case "System.String"://字符串类型
            newCell.SetCellValue(drValue);
            break;
            case "System.DateTime"://日期类型
            DateTime dateV;
            if (drValue.Trim().Length > 1)
              {
                DateTime.TryParse(drValue, out dateV);
                newCell.SetCellValue(dateV);
              }
            else
              {
                newCell.SetCellValue(drValue);
              }


    newCell.CellStyle = dateStyle;//格式化显示
    break;
    case "System.Boolean"://布尔型
    bool boolV = false;
    bool.TryParse(drValue, out boolV);
    newCell.SetCellValue(boolV);
    break;
    case "System.Int16"://整型
    case "System.Int32":
    case "System.Int64":
    case "System.Byte":
    int intV = 0;
    int.TryParse(drValue, out intV);
    newCell.SetCellValue(intV);
    break;
    case "System.Decimal"://浮点型
    case "System.Double":
    double doubV = 0;
    double.TryParse(drValue, out doubV);
    newCell.SetCellValue(doubV);
    break;
    case "System.DBNull"://空值处理
    newCell.SetCellValue("");
    break;
    default:
    newCell.SetCellValue("");
    break;
    }

     }
    #endregion

        rowIndex++;
      }


      using (NPOIMemoryStream ms = new NPOIMemoryStream())
        {
          workbook.Write(ms);
          ms.Flush();
          ms.Position = 0;

          sheet = null;
          workbook = null;//一般只用写这一个就OK了,他会遍历并释放所有资源,但当前版本有问题所以只释放sheet
          return ms;
        }

    }


          

  • 相关阅读:
    【L.M.W.Y.D】Scrum Meeting 2
    【L.M.W.Y.D】Scrum Meeting 1
    L.M.W.Y.D 实验八 团队作业4—团队项目需求建模与系统设计
    L.M.W.Y.D 实验七 团队作业3:团队项目需求分析与原型设计
    L.M.W.Y.D 实验六 团队作业2:健康管理系统
    L.M.W.Y.D 实验五 团队作业1:软件研发团队组建与软件案例分析
    多喝热水 [Alpha] Scrum Meeting 3
    多喝热水 [Alpha] Scrum Meeting 2
    多喝热水 [Alpha] Scrum Meeting 1
    多喝热水 实验八 团队作业4:团队项目需求建模与系统设计
  • 原文地址:https://www.cnblogs.com/popo1/p/12727010.html
Copyright © 2011-2022 走看看