Aspose.Cells代码创建Excel(C#)

WinForm使用Aspose.cells利用模板导出Excel,这篇文章中讲述了如何使用模板进行导出Excel,但是实际上还有比较复杂的Excel导出操作,直接使用模板是无法完成,在这里就要代码创建模板,然后利用创建的模板进行Excel的导出。下面来看一个例子:

项目要实现的效果图如上图,用户可以多选单位客户,然后可进行导出,自动根据单位进行分页,每一个单位至少占一页。
因为条件是不确定的,单位也是不确定的,所以无法建立一个统一的模板进行导出,也许有人认为利用Group可以实现,但是实际上是不行的,因为单位与实际的数据Table不是在一行的,利用Group时,是会分组,但是下面的数据只有一段,只是创建了多个单位所在的行。下面就说说我的实现方法吧。
(1)我们依旧要使用模板进行导出,只不过这个模板不是简单的模板,而且我们通过代码创建的一个模板,首先我们要做的就是代码创建模板。而且这个模板是会自动根据数据源进行分页的,并且这个模板是有多个数据的,代码创建的模板如下。

模板创建的录入实际的数据表格式类似,已经实现了自动的分页,实际上绑定数据只是设置数据源而已。可以看见我们主要是要创建一个如上图的Excel表格,这就稍微有些许简单了吧,下面来看看代码吧。
(2)Aspose.Cells创建Excel。
下面是创建代码Excel的主要代码:
1。创建以上的Excel表格就必须代码明了分页,在这里我新建了一个函数进行创建表格的操作,传入的参数有三个,一个是表格本身,第二个是创建的页的第一行,第三个是数据的总行数。具体的可以看代码,比较简单,主要是如何处理分页的步骤。

        int yeHasCount = 34;//每页有多少行
        int oneYeHasCount = 29;//第一页具有多少行,去除表头以后
        #region
        /// <summary>
        /// 创建Excel表格,每页三十二行,表头+表尾总共五行
        /// </summary>
        /// <param name="workBook"></param>
        /// <param name="i">下一页的第一行</param>
        /// <param name="count">数据的行数</param>
        /// <returns>返回下一个表格开始的行数</returns>
        private int createCheckDetail(Workbook workBook,int i,int count) {
            Worksheet workSheet = workBook.Worksheets[0]; //获取工作簿
            Cells cells = workSheet.Cells;
            //设置行高
            cells.SetRowHeight(i,21);
            cells.SetRowHeight(i+1, 21);
            cells.SetRowHeight(i+2, 21);
            cells.SetRowHeight(i+3, 21);
            cells.SetRowHeight(i + 4, 21);
            cells.SetRowHeight(i + 5, 21);

            cells.SetColumnWidth(0,4.5);
            cells.SetColumnWidth(1,8.7);
            cells.SetColumnWidth(2, 24);
            cells.SetColumnWidth(3, 12.5);
            cells.SetColumnWidth(4, 8.5); 
            cells.SetColumnWidth(5, 5.0); 
            cells.SetColumnWidth(6, 8);
            cells.SetColumnWidth(7,10.9);

            Style style1 = workBook.Styles[workBook.Styles.Add()];
            //设置居中
            style1.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
            style1.VerticalAlignment = Aspose.Cells.TextAlignmentType.Center;
            //设置背景颜色
            style1.Font.IsBold = true;
            style1.Font.Name = "宋体";
            style1.Font.Size = 12;
            style1.IsTextWrapped = true; //自动换行

            Style styleBorder = workBook.Styles[workBook.Styles.Add()];//边界线
            styleBorder.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线
            styleBorder.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
            styleBorder
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值