Aspose.cells导出Excel合并行单元格(Datatable)


//前台ajax返回成功的数据

 $.ajax({
            url: "地址?r=" + Math.random,
            type: "post",
            async: false,

//传的搜索条件
            data: { key: data},
            cache: false,
            success: function (obj) {
                if (obj.split('|')[0] == "true") {
                    //alert(obj.split('|')[1]);
                    window.open(obj.split('|')[1], '_parent'); 
                }
                else
                    alert("导出失败!");
            }
        });

//后台代码

#region 合并列导出 DevStatusExport()

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public string DevStatusExport()
        {

            StringBuilder key = new StringBuilder();

//前台查询条件

            string key_data= Request["key"] == null ? "" : Request["key"].ToString().Trim();  
            //key.Append("1=1");
            if (!string.IsNullOrEmpty(key_data))
            {
                key.AppendFormat(" AND 条件 LIKE '%{0}%'", key_data);
            }
           //导出子母表数据及明细

            DataSet ds = DevDemandBLL.GetExportList(key.ToString());

//母表的条数

            DataSet dss = DevDemandBLL.GetExportLists(key.ToString());
          //生成随机数
            Random objRand = new Random();
            string fileName = "合并行单元格导出" + DateTime.Now.ToString("yyyyMMdd") + Convert.ToString(objRand.Next(9) * 7 + 10) + ".xls";
            try
            {
                WriteExcels(ds, dss, Server.MapPath("/ExportPath/" + fileName));
            }
            catch (Exception ex)
            {
                return "false|" + ex.Message;
            }
            return "true|/ExportPath/" + fileName;
        }


        public void WriteExcels(DataSet ds,DataSet dss, string path)
        {
            try
            {
                DataTable data = ds.Tables[0];

                DataTable dt = dss.Tables[0];

//创建EXCEL表

                Workbook book = new Workbook();
                Worksheet sheet = book.Worksheets[0];
                Cells cells = sheet.Cells;
                if (dt.Rows.Count > 0)
                {
                    int Colnum = data.Columns.Count;//表格列数 
                    int Rownum = data.Rows.Count;//表格行数 
                    //生成标题行
                    cells[0, 0].PutValue("第一列");
                    cells[0, 1].PutValue("第二列");
                    cells[0, 2].PutValue("第三列");
     
                    //生成数据行   
                    for (int i = 0; i < Rownum; i++)
                    {
                        for (int k = 0; k < Colnum; k++)
                        {
                            cells[1 + i, k].PutValue(data.Rows[i][k].ToString());
                        }
                    }
                    //合并单元格
                    int q = 0;

                    int RowOrder = 0;

//循环母表数据

                    foreach (DataRow item in dt.Rows)

                    {

//查询母表下子表的条数

                        RowOrder = DevDemandBLL.GetRowsOrder(item["字段"].ToString());

                        cells.Merge(1 + q, 0, RowOrder, 1);

  cells.Merge(1 + q, 1, RowOrder, 1);
                        cells.Merge(1 + q, 2, RowOrder, 1);

//(1+q:第几行开始;第几列;合并行数;)

                        q = q + RowOrder;
                    } 
                }
                book.Save(path);
                GC.Collect();
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }
        #endregion
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Aspose.Cells是一个用于处理Excel文件的.NET组件。在使用Aspose.Cells导出Excel文件时,可以使用以下代码示例: ```csharp System.Web.HttpResponse Response = System.Web.HttpContext.Current.Response; workbook.Save(Response, HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".xlsx", Aspose.Cells.ContentDisposition.Attachment, new Aspose.Cells.XlsSaveOptions(Aspose.Cells.SaveFormat.Xlsx)); ``` 这段代码将Excel文件保存到HttpResponse中,以便将其作为附件下载。其中,`workbook`是你创建的Excel工作簿对象,`filename`是你想要保存的文件名。 在生成Excel文件时,你还可以设置标题和列头的样式,例如: ```csharp // 生成标题 cells.Merge(0, 0, 1, header.Keys.Count); // 合并单元格,标题有几列就合并几列 cells\[0, 0\].PutValue(filename); // 填写内容 cells\[0, 0\].SetStyle(styleTitle); // 使用标题样式 cells.SetRowHeight(0, 50); // 第0,50px高 // 生成列头 int headerNum = 0; // 当前表头所在列 foreach (string item in header.Keys) { cells\[1, headerNum\].PutValue(item); cells\[1, headerNum\].SetStyle(styleHeader); cells.SetColumnWidthPixel(headerNum, 200); // 设置单元格200宽度 cells.SetRowHeight(1, 30); // 第一,30px高 headerNum++; } ``` 这段代码示例展示了如何设置标题和列头的样式,其中`cells`是你创建的Worksheet对象,`header`是一个包含列头信息的字典,`styleTitle`和`styleHeader`是你定义的样式对象。 希望这些代码示例能帮助到你导出Excel文件使用Aspose.Cells。 #### 引用[.reference_title] - *1* *2* *3* [使用Aspose.Cells导出excel](https://blog.csdn.net/rxbtalent/article/details/99818241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值