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
    评论
C# ,您可以使用以下代码实现 DataGridView 数据的导入和导出 Excel 文件的功能。 导入 Excel 文件到 DataGridView: ```csharp using System; using System.Data; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; public void ImportExcelToDataGridView(DataGridView dataGridView, string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Open(filePath); Excel.Worksheet worksheet = workbook.ActiveSheet; int rowCount = worksheet.UsedRange.Rows.Count; int columnCount = worksheet.UsedRange.Columns.Count; DataTable dataTable = new DataTable(); for (int col = 1; col <= columnCount; col++) { dataTable.Columns.Add(worksheet.Cells[1, col].Value.ToString()); } for (int row = 2; row <= rowCount; row++) { DataRow dataRow = dataTable.NewRow(); for (int col = 1; col <= columnCount; col++) { dataRow[col - 1] = worksheet.Cells[row, col].Value; } dataTable.Rows.Add(dataRow); } dataGridView.DataSource = dataTable; workbook.Close(); excelApp.Quit(); } ``` 导出 DataGridView 数据到 Excel 文件: ```csharp using System; using System.Data; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; public void ExportDataGridViewToExcel(DataGridView dataGridView, string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = workbook.ActiveSheet; for (int col = 1; col <= dataGridView.Columns.Count; col++) { worksheet.Cells[1, col] = dataGridView.Columns[col - 1].HeaderText; worksheet.Cells[1, col].Font.Bold = true; } for (int row = 0; row < dataGridView.Rows.Count; row++) { for (int col = 0; col < dataGridView.Columns.Count; col++) { worksheet.Cells[row + 2, col + 1] = dataGridView.Rows[row].Cells[col].Value.ToString(); } } worksheet.Columns.AutoFit(); workbook.SaveAs(filePath); workbook.Close(); excelApp.Quit(); } ``` 您可以调用 `ImportExcelToDataGridView` 方法将 Excel 文件导入到 DataGridView,传入要导入的 DataGridView 对象和 Excel 文件路径。调用 `ExportDataGridViewToExcel` 方法将 DataGridView 数据导出Excel 文件,传入要导出的 DataGridView 对象和 Excel 文件路径。 请注意,导入和导出 Excel 文件需要在项目引用 Microsoft.Office.Interop.Excel 库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值