C# 各种骚操作的导出EXCEL

  •  

一 导出带有图片格式的excel

在 C# 构建树形数据的文章中,就已经写好了两个帮助类。则可直接调用。

            DataTable data = new DataTable();
            data.Columns.Add("Describe");
            data.Columns.Add("MiniImgUrl");
            data.Columns.Add("ShootingTime");
            data.Columns.Add("LastEditByName");
            data.Columns.Add("LastEditDate");
           
            var query =  list的数据源;
            foreach (var dtData in query)
            {
                DataRow dtRow = data.NewRow();
                dtRow["Describe"] = dtData.Describe;
                dtRow["ShootingTime"] = dtData.ShootingTime.ToString("yyyy-MM-dd");
                dtRow["LastEditByName"] = dtData.LastEditByName;
                dtRow["LastEditDate"] = dtData.LastEditDate.Value.ToString("yyyy-MM-dd");

                var Imgs = dtData.Attachments.ToList();
                //多个图片的情况下。
                dtRow["MiniImgUrl"] = string.Join(",", Imgs.Select(t => t.FilePath));

                data.Rows.Add(dtRow);
            }
            List<string> lstColName = new List<string>();
            lstColName.Add("图片描述");
            lstColName.Add("图片");
            lstColName.Add("拍摄时间");
            lstColName.Add("记录时间");
            lstColName.Add("记录人");

         //路径
         return  ExcelHelpers.ExportContainImage(data, lstColName, "项目图片信息", 1);

导出样式。

可导出上传的多张图片

二 导出动态合并单元格

  1. 先把数据拼成DataTable。和表头一起

  2.在进行处理

   var plan = _fullViewPlanService.GetFull(planId, type);
            var lockCells = new List<ExcelLockCell>();
            var transformTable = dataTable;
            var tableName = SpecialCharacters.RemoveSpecialCharacters(plan.StruName + "-" + plan.ProjectName + "-" + plan.StageName + "-" + plan.GroupName) + "楼栋计划";

            var names = SpecialCharacters.RemoveSpecialCharacters(tableName);
            var exportHelper = new NPOIHelper(names);

            var tableCom = 【动态的表头数据源】;

            var firstHeadColumn = new List<ExcelHeader>
            {
                new ExcelHeader{FieldName="楼栋名称",MergeRowCount=1,ColumnIndex=0},
                new ExcelHeader{FieldName="业态",MergeRowCount=1,ColumnIndex=1},
                new ExcelHeader { FieldName = "面积", ColumnIndex = 2 , MergeColumnCount = 1 }

            };

            for (int i = 0; i < tableCom.Count; i++)
            {
                firstHeadColumn.Add(new ExcelHeader { FieldName = tableCom[i].Name, ColumnIndex = 4 + 2 * i, MergeColumnCount = 1 });
            }

            var secondHeadColumn = new List<ExcelHeader>();

            secondHeadColumn.Add(new ExcelHeader { FieldName = "建筑面积", ColumnIndex = 2 });
            secondHeadColumn.Add(new ExcelHeader { FieldName = "可售面积", ColumnIndex = 3 });

            for (int i = 0; i < tableCom.Count; i++)
            {
                secondHeadColumn.Add(new ExcelHeader { FieldName = "计划完成时间", ColumnIndex = 4 + 2 * i });
                secondHeadColumn.Add(new ExcelHeader { FieldName = "实际完成时间", ColumnIndex = 5 + 2 * i });
            }
            exportHelper.CreateExcelHeadRow(firstHeadColumn, 0);
            exportHelper.CreateExcelHeadRow(secondHeadColumn, 1);
            exportHelper.CreateExcelContentRow(transformTable, 2);

            return exportHelper.GetExcelHttpResponseMessage(tableName);

三 导出背景色的excel

  1.在excel 单元格中,使用FillForegroundColor属性,导出的时候就会有背景颜色

ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.FillPattern = FillPattern.SolidForeground;
cellStyle.FillForegroundColor = 47;
cell.CellStyle = cellStyle;

四 、导出树形格式的excel

在 C# 构建树形数据的文章中,已经写好了。有需要的请参考...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值