Asp.net中Excel导出

对于asp.net 的Excel导出,有多种方法,到目前,个人认为,利用myxls导出Excel还是比较好用的,可以很好的设置Excel的格式。。。

使用很方便,下载org.in2bits.MyXls.dll,引入命名空间即可

 

下面是一个使用代码示例:

 

private void ExcelExport(IList< LineLossInfo > lossListExcel)

    {

        XlsDocument xls = new XlsDocument();

        xls.FileName = "LineLossMonthDetail.xls";//指定文件名

 

        Worksheet sheet = xls.Workbook.Worksheets.Add("LineLossMonthDetail");

        #region 设置各数据列的大小

        ColumnInfo colInfo1 = new ColumnInfo(xls, sheet);

        colInfo1.ColumnIndexStart = 0;

        colInfo1.ColumnIndexEnd = 1;

        colInfo1.Width = 15 * 256;

        sheet.AddColumnInfo(colInfo1);

 

        ColumnInfo colInfo2 = new ColumnInfo(xls, sheet);

        colInfo2.ColumnIndexStart = 2;

        colInfo2.ColumnIndexEnd = 2;

        colInfo2.Width = 15 * 256;

        sheet.AddColumnInfo(colInfo2);

 

        ColumnInfo colInfo3 = new ColumnInfo(xls, sheet);

        colInfo3.ColumnIndexStart = 3;

        colInfo3.ColumnIndexEnd = 3;

        colInfo3.Width = 15 * 256;

        sheet.AddColumnInfo(colInfo3);

 

        ColumnInfo colInfo4 = new ColumnInfo(xls, sheet);

        colInfo4.ColumnIndexStart = 4;

        colInfo4.ColumnIndexEnd = 4;

        colInfo4.Width = 15 * 256;

        sheet.AddColumnInfo(colInfo4);

 

        ColumnInfo colInfo5 = new ColumnInfo(xls, sheet);

        colInfo5.ColumnIndexStart = 5;

        colInfo5.ColumnIndexEnd = 5;

        colInfo5.Width = 32 * 256;

        sheet.AddColumnInfo(colInfo5);

        #endregion

 

        Cells cells = sheet.Cells;

 

        #region 合并单元格,得到报表标题

        MergeArea maTitle = new MergeArea(1, 2, 1, 6);

        sheet.AddMergeArea(maTitle);

        XF xfTitle = xls.NewXF();

        xfTitle.HorizontalAlignment = HorizontalAlignments.Centered;

        xfTitle.VerticalAlignment = VerticalAlignments.Centered;

        xfTitle.Font.FontName = "宋体";

        xfTitle.Font.Height = 16 * 20;

        xfTitle.Font.Bold = true;

        cells.Add(1, 1, divDataHeader.InnerText, xfTitle);

        #endregion

 

        MergeArea maTime1 = new MergeArea(3, 3, 1, 6);

        sheet.AddMergeArea(maTime1);

        XF xfTopBar = xls.NewXF();

        xfTopBar.Font.FontName = "宋体";

        cells.Add(3, 1, divDataCondition.InnerText, xfTopBar);

 

        #region 设置Excel数据列标题的格式

        XF xfDataHead = xls.NewXF();

        xfDataHead.HorizontalAlignment = HorizontalAlignments.Centered;

        xfDataHead.VerticalAlignment = VerticalAlignments.Centered;

        xfDataHead.Font.FontName = "宋体";

        xfDataHead.Font.Bold = true;

        xfDataHead.UseBorder = true;

        xfDataHead.BottomLineStyle = 1;

        xfDataHead.BottomLineColor = Colors.Black;

        xfDataHead.TopLineStyle = 1;

        xfDataHead.TopLineColor = Colors.Black;

        xfDataHead.LeftLineStyle = 1;

        xfDataHead.LeftLineColor = Colors.Black;

        xfDataHead.RightLineStyle = 1;

        xfDataHead.RightLineColor = Colors.Black;

        #endregion

 

        #region 添加列标题

        cells.Add(4, 1, "日期", xfDataHead);

        cells.Add(4, 2, "供电量", xfDataHead);

        cells.Add(4, 3, "用电量", xfDataHead);

        cells.Add(4, 4, "损失量", xfDataHead);

        cells.Add(4, 5, "损失率", xfDataHead);

        cells.Add(4, 6, "说明", xfDataHead);

        #endregion

 

        #region 设置各数据列的格式

        XF xfData = xls.NewXF();

        xfData.Font.FontName = "宋体";

        xfData.UseBorder = true;

        xfData.BottomLineStyle = 1;

        xfData.BottomLineColor = Colors.Black;

        xfData.TopLineStyle = 1;

        xfData.TopLineColor = Colors.Black;

        xfData.LeftLineStyle = 1;

        xfData.LeftLineColor = Colors.Black;

        xfData.RightLineStyle = 1;

        xfData.RightLineColor = Colors.Black;

        #endregion

 

        #region 填充数据

        int i = 5;//从第五行开始为数据行

        double provideTotal = 0;

        double useTotal = 0;

        double lossTotal = 0;

        foreach(LineLossInfo lossItem in lossListExcel)

        {

            cells.Add(i,1,lossItem.Date,xfData);

 

            if (Double.IsNaN(lossItem.ProvideValue))

                cells.Add(i, 2, "-", xfData);

            else

            {

                cells.Add(i, 2, lossItem.ProvideValue, xfData);

                provideTotal += lossItem.ProvideValue;

            }

 

            if (Double.IsNaN(lossItem.UseValue))

                cells.Add(i, 3, "-", xfData);

            else

            {

                cells.Add(i, 3, lossItem.UseValue, xfData);

                useTotal += lossItem.UseValue;

            }

 

            if (Double.IsNaN(lossItem.LossValue))

                cells.Add(i, 4, "-", xfData);

            else

            {

                cells.Add(i, 4, lossItem.LossValue, xfData);

                lossTotal += lossItem.LossValue;

            }

 

            if(Double.IsNaN(lossItem.LossRate))

                cells.Add(i,5,"-",xfData);

            else

                cells.Add(i,5,lossItem.LossRate,xfData);

 

            if(String.IsNullOrEmpty(lossItem.Info))

                cells.Add(i,6,"-",xfData);

            else

                cells.Add(i,6,lossItem.Info,xfData);

            i++;

        }

        //添加总计

        cells.Add(i, 2, "总计:", xfData);

        cells.Add(i, 3, provideTotal, xfData);

        cells.Add(i, 4, useTotal, xfData);

        cells.Add(i, 5, lossTotal, xfData);

        #endregion

        //发送到客户端

        xls.Send();

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值