• MVC架构下的导出为excel的代码


      public void OutPutdata(out string filename, out string filetype, out string filePath, out long filesize, MODEL.ComplexQuery SaveQuery)
            {
                var querydal = new DAL.ComplexQuery();
                querydal.ComQueryData(ref SaveQuery);
                var dt = SaveQuery.QueryResult.Tables[0];//返回datatable表
                if (dt.Rows.Count < 1)//判断是否存在数据
                    throw new Exception(@"数据不存在,请与系统管理员联系!");
                var savepath = @"D:\PIMS\PROD\ComplexQuery";
                if (!Directory.Exists(savepath))//如果不存在则创建该文件夹
                    Directory.CreateDirectory(savepath);

                var xlApp = new Application();
                xlApp.DisplayAlerts = true;//是否弹出选择框
                xlApp.AlertBeforeOverwriting = true;
                var workbooks = xlApp.Workbooks;//定义excel
                var workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                var worksheet = (Worksheet)workbook.Worksheets[1];//取得sheet1
                Range range = null;//定义range
                //写入每列的列名
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
                    range = (Range)worksheet.Cells[1, i + 1];
                    range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
                }
                //动态定义列数
               range = xlApp.Range[worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 1, dt.Columns.Count]];

                range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
                var data = new object[dt.Rows.Count, dt.Columns.Count];
                for (var i = 0; i < dt.Rows.Count; i++)
                {
                    for (var n = 0; n < dt.Columns.Count; n++)
                    {
                        data[i, n] = dt.Rows[i][n];
                    }
                }
                range.Value2 = data;//将数据赋值到range
                workbook.Saved = true;
                var newid = "";
                var datetime = DateTime.Now.ToString("yyyyMMddhhmmss");
                //保存路径
                savepath = PubMethod.GetNewPathForDupes(savepath + "\\" + datetime + ".xls", out newid);
                workbook.SaveAs(savepath, XlFileFormat.xlExcel8, null, null, false, false,
                                             XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);

                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
                xlApp.Quit();
                workbook = null;
                workbooks = null;
                worksheet = null;
                var fi = new FileInfo(savepath);
                filename = savepath;
                filetype = "xls";
                filesize = fi.Length;
                filePath = savepath;
                DAL.PROD.PIMSCommon.DataExportLogAdd(datetime, newid, "ComplexQuery", Convert.ToInt32(fi.Length), savepath,
                                                     SaveQuery.userID);
                GC.Collect();//垃圾回收
            }

    Controller中代码:

     using (var bll = new QueryBLL.QueryClient())
                    {
                        var filename = "";
                        var filetype = "";
                        var filePath = "";
                        long filesize;
                        bll.OutPutdata(out filetype, out filePath, out filesize, CDQuery);
                        jr.Data = new
                                      {
                                          iserror = false,
                                          filename = filePath.Substring(filePath.LastIndexOf(@"\") + 1),//文件名
                                          filetype = filetype,//文件类型
                                          filePath = filePath,//文件路径
                                          filesize = (filesize / long.Parse("1024")).ToString("0.00"),//文件大小
                                      };
                    }

  • 相关阅读:
    【Sparse】关于__attribute__((bitwise)),__le32,__be32等的理解【转】
    设备树中ranges属性分析(1)【转】
    Linux内核API sprint_symbol【转】
    Linux内核--网络协议栈深入分析(二)--sk_buff的操作函数【转】
    浅析SkipList跳跃表原理及代码实现【转】
    关于kernel module签名【转】
    apt-get 更新指定软件_Linux系统 aptget 命令的使用:安装、更新、卸载软件包【转】
    如何挂载ubi文件系统【转】
    伙伴系统之伙伴系统概述--Linux内存管理(十五)【转】
    精确时间协议PTP研究【转】
  • 原文地址:https://www.cnblogs.com/QiuJL/p/4524243.html
Copyright © 2020-2023  润新知