• 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据


    控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726
    @{
        ViewBag.Title = "xx";
    }
    <script type="text/javascript" language="javascript">
        function getparam() {
            var param = {};
            param.sear = $("#sear").textbox('getValue');
            return param;
        }
        //这样写是为了传参数
        function print_dc()
        {
            var param = getparam();//参数
            var formobj=$("<form id='form1' action='dcExcel' method='post'></from>");
            //参数
            $("body").append(formobj);
            $.each(param,function(i,o){
                var input1=$("<input type='hidden' value='"+o+"' name='"+i+"'/>");
                input1.appendTo(formobj);
            });
            
            formobj.submit();
        }
    </script>
    <input class="easyui-textbox" id="sear" data-options="80"/>
        <button type="button" class="but-primary" onclick="print_dc()">
            汇总</button>
    
    
    
    
    public ActionResult dcExcel(stream sear)
            {
                DataTable dt = dal.GetKslyTj(" kd='"+sear+"'");
              var stream=PrintExcelApose.PrintExcel(dt, Server.MapPath(Path.Combine("../Ex/dd/", "ddd.xls")), "xx信息");
              return File(stream, "application/octet-stream", "xx信息.xls");
     
            }
    
    
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using Aspose.Cells;
    using System.IO;
     
    namespace YidiTutor.Common
    {
        public class PrintExcelApose
        {
            public PrintExcelApose()
            {
     
            }
         
     
            /// <summary>
            /// 打印Excel模板
            /// </summary>
            /// <param name="dt">数据源Datatable</param>
            /// <param name="path">Excel路径</param>
            /// <param name="filename">导出的文件名称</param>
            public static  byte[] PrintExcel(DataTable dt, string path, string filename)
            {
                
                //(&=[yddt].xh)
                filename = filename + ".xls";
                Aspose.Cells.WorkbookDesigner designer = new Aspose.Cells.WorkbookDesigner();
                dt.TableName = "yddt";
                designer.Open(path); //打开Excel模板
                designer.SetDataSource(dt);//设置数据源
                designer.Process();//自动赋值
                if (System.IO.File.Exists(filename))
                    System.IO.File.Delete(filename);
               // designer.Save(System.Web.HttpUtility.UrlDecode(System.Text.Encoding.UTF8.GetBytes(filename),System.Text.Encoding.UTF8), Aspose.Cells.SaveType.OpenInExcel, Aspose.Cells.FileFormatType.Excel2003, HttpContext.Current.Response);
     
                return designer.Workbook.SaveToStream().ToArray();
                //HttpContext.Current.Response.End();
     
            }
     
            /// <summary>
            /// 打印Excel模板
            /// </summary>
            /// <param name="dtinfo">datatable数据</param>
            /// <param name="dtlist">datatable数据源</param>
            /// <param name="dict">Dictionary数据</param>
            /// <param name="path">Excel地址</param>
            /// <param name="filename">导出文件名称</param>
            /// <param name="protect">是否可编辑,true不可修改,false可修改</param>
            public static byte[] PrintExcel(DataTable dtinfo, DataTable dtlist, Dictionary<string, string> dict, string path, string filename, bool protect = false)
            {
                filename = filename + ".xls";
                Aspose.Cells.WorkbookDesigner designer = new Aspose.Cells.WorkbookDesigner();
                dtlist.TableName = "yddt";
                designer.Open(path); //打开Excel模板
                Workbook workbook = designer.Workbook; //工作簿 
                if (dtinfo != null && dtinfo.Rows.Count > 0)
                {
                    for (int i = 0; i < dtinfo.Rows.Count; i++)
                    {
                        for (int k = 0; k < dtinfo.Columns.Count; k++)
                        {
                            string column = dtinfo.Columns[k].ColumnName;
                            workbook.Worksheets[0].Replace("$" + column.ToLower() + "$", dtinfo.Rows[i][column].ToString());
                        }
                    }
                }
                if (dict != null)
                {
                    foreach (string j in dict.Keys)
                    {
                        workbook.Worksheets[0].Replace("$" + j.ToLower() + "$", dict[j].ToString());
                    }
                }
                if (protect)
                    workbook.Worksheets[0].Protect(ProtectionType.All, "xakj..123", "");
                designer.SetDataSource(dtlist);//设置数据源
                designer.Process();//自动赋值
                if (System.IO.File.Exists(filename))
                    System.IO.File.Delete(filename);
               // designer.Save(System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(filename)), Aspose.Cells.SaveType.OpenInExcel, Aspose.Cells.FileFormatType.Excel2003, HttpContext.Current.Response);
                //designer.Save(System.Web.HttpUtility.UrlDecode(System.Text.Encoding.UTF8.GetBytes(filename),System.Text.Encoding.UTF8), Aspose.Cells.SaveType.OpenInExcel, Aspose.Cells.FileFormatType.Excel2003, HttpContext.Current.Response);
                //HttpContext.Current.Response.End();
                return designer.Workbook.SaveToStream().ToArray();
     
           
            }
     
            /// <summary>
            /// 打印Excel模板
            /// </summary>
            /// <param name="printexcel">填充Excel数据类</param>
            public static byte[] PrintExcel(PrintExcel printexcel)
            {
                printexcel.filename = printexcel.filename + ".xls";
                Aspose.Cells.WorkbookDesigner designer = new Aspose.Cells.WorkbookDesigner();
                printexcel.dtlist.TableName = "yddt";
                designer.Open(printexcel.path); //打开Excel模板
                MergeExcel merge = printexcel.merge;//合并单元格
                Workbook workbook = designer.Workbook; //工作簿 
                if (printexcel.dtinfo != null && printexcel.dtinfo.Rows.Count > 0)
                {
                    for (int i = 0; i < printexcel.dtinfo.Rows.Count; i++)
                    {
                        for (int k = 0; k < printexcel.dtinfo.Columns.Count; k++)
                        {
                            string column = printexcel.dtinfo.Columns[k].ColumnName;
                            workbook.Worksheets[0].Replace("$" + column.ToLower() + "$", printexcel.dtinfo.Rows[i][column].ToString());
                        }
                    }
                }
                if (printexcel.dict != null)
                {
                    foreach (string j in printexcel.dict.Keys)
                    {
                        workbook.Worksheets[0].Replace("$" + j.ToLower() + "$", printexcel.dict[j].ToString());
                    }
                }
                if (printexcel.protect)
                    workbook.Worksheets[0].Protect(ProtectionType.All, "xakj..123", "");
                designer.SetDataSource(printexcel.dtlist);//设置数据源
                designer.Process();//自动赋值
     
                //合格单元格
                if (printexcel.dtlist != null && printexcel.dtlist.Rows.Count > 0)
                {
                    Aspose.Cells.Worksheet sheet = designer.Workbook.Worksheets[0];
                    Cells cel = sheet.Cells;
                    List<int> column = printexcel.merge.firstColumn;
                    int j = 1;
                    for (int i = 0; i < printexcel.dtlist.Rows.Count; i++)
                    {
                        for (int kk = 0; kk < column.Count; kk++)
                        {
                            cel.Merge(merge.firstRow, column[kk], Convert.ToInt32(printexcel.dtlist.Rows[i][merge.columnname].ToString().Trim()), merge.columnNumber);
                            cel[merge.firstRow, column[kk]].PutValue(j);
                            i = i + Convert.ToInt32(printexcel.dtlist.Rows[i][merge.columnname].ToString().Trim()) - 1;
                            j++;
                        }
                    }
                }
     
                if (System.IO.File.Exists(printexcel.filename))
                    System.IO.File.Delete(printexcel.filename);
                //designer.Save(System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(printexcel.filename)), Aspose.Cells.SaveType.OpenInExcel, Aspose.Cells.FileFormatType.Excel2003, HttpContext.Current.Response);
                //HttpContext.Current.Response.End();
                return designer.Workbook.SaveToStream().ToArray();            
            }
        }
     
     
        /// <summary>
        /// 填充Excel数据
        /// </summary>
        public class PrintExcel
        {
            /// <summary>
            /// 数据
            /// </summary>
            public DataTable dtinfo;
            /// <summary>
            /// 数据源
            /// </summary>
            public DataTable dtlist;
            /// <summary>
            /// 数据
            /// </summary>
            public Dictionary<string, string> dict;
            /// <summary>
            /// Excel地址
            /// </summary>
            public string path;
            /// <summary>
            /// 导出Excel名称
            /// </summary>
            public string filename;
            /// <summary>
            /// 是否可编辑
            /// </summary>
            public bool protect = false;
            /// <summary>
            /// 合并单元格
            /// </summary>
            public MergeExcel merge;
        }
        /// <summary>
        /// 合格单元格
        /// </summary>
        public class MergeExcel
        {
            /// <summary>
            /// 第几行
            /// </summary>
            public int firstRow;
            /// <summary>
            /// 合并的第几列
            /// </summary>
            public List<int> firstColumn;
            /// <summary>
            /// 合并行数
            /// </summary>
            public int rowNumber;
            /// <summary>
            /// 合并的列数
            /// </summary>
            public int columnNumber;
            /// <summary>
            /// datatable合并行数的列名称字段
            /// </summary>
            public string columnname;
        }
     
     
        public class AsposeExcell
        {
            public static DataTable ExportToDataTableAsString(string excelFilePath, bool showTitle = true)
            {
                Workbook workbook = new Workbook();
                workbook.Open(excelFilePath);
                Cells cells = workbook.Worksheets[0].Cells;
                System.Data.DataTable dataTable2 = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxColumn + 1, showTitle);//showTitle
                return dataTable2;
            }
            public static DataTable ExportToDataTableAsString(Stream stream, bool showTitle = true)
            {
                Workbook workbook = new Workbook();
                workbook.Open(stream);
                Cells cells = workbook.Worksheets[0].Cells;
                System.Data.DataTable dataTable2 = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxColumn + 1, showTitle);//showTitle
                return dataTable2;
            }
            public static Stream FileToStream(string fileName)
            {
                // 打开文件
                FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                // 读取文件的 byte[]
                byte[] bytes = new byte[fileStream.Length];
                fileStream.Read(bytes, 0, bytes.Length);
                fileStream.Close();
                // 把 byte[] 转换成 Stream
                Stream stream = new MemoryStream(bytes);
                return stream;
            }
        }
    }
  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/Ajoying/p/MVC_Aspose_Cells.html
Copyright © 2020-2023  润新知