zoukankan      html  css  js  c++  java
  • C# 如何将DataTable转成Excel文件(利用Aspose.Cells.dll插件生成)补充生成Excel标题

    之前利用Aspose.Cells.dll插件生成Excel表格信息,缺失标题栏信息,先在原先方法进行修改

    不知道可访问上一篇查看:https://www.cnblogs.com/xielong/p/13597757.html

    直接上代码,辅助方法

    public static class ExportHelper
        {
    /// <summary>
            /// DataTable数据生成Excel文件(调用第三方Aspose.Cells.dll插件)
            /// </summary>
            /// <param name="data">导入Excel的dataTable数据源</param>
            /// <param name="filepath">保存的文件路径</param>
            public static void CreateExcelByAsposeCells(DataTable data, string filepath)
            {
                try
                {
                    //Workbook book = new Workbook("E:\test.xlsx"); //打开工作簿
                    Workbook book = new Workbook(); //创建工作簿
                    Worksheet sheet = book.Worksheets[0]; //创建工作表
                    Cells cells = sheet.Cells; //单元格
                    //创建 列名行的样式
                    Style style = book.Styles[book.Styles.Add()];
                    style.Borders[BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
                    style.Borders[BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
                    style.Borders[BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
                    style.Borders[BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线   
                    style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
                    style.Font.Name = "宋体"; //字体
                    style.Font.IsBold = true; //设置粗体
                    style.Font.Size = 12; //设置字体大小
                    style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色
                    style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景样式
                    style.IsTextWrapped = true; //单元格内容自动换行
    
                    //创建 数据行的样式
                    Style conStyle = book.Styles[book.Styles.Add()];
                    conStyle.Borders[BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
                    conStyle.Borders[BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
                    conStyle.Borders[BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
                    conStyle.Borders[BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线
                    conStyle.Font.Name = "宋体";
                    conStyle.HorizontalAlignment = TextAlignmentType.Left;  //单元格内容的水平对齐方式文字居中
                    conStyle.Font.IsBold = false;
                    conStyle.Font.Size = 11;
    
                    //表格填充数据
                    int Colnum = data.Columns.Count;//表格列数 
                    int Rownum = data.Rows.Count;//表格行数 
                    //生成行 列名行 
                    for (int i = 0; i < Colnum; i++)
                    {
                        cells[0, i].PutValue(data.Columns[i].ColumnName); //添加表头
                        cells[0, i].SetStyle(style); //添加样式
                        //cells.SetColumnWidth(i, data.Columns[i].ColumnName.Length * 2 + 1.5); //自定义列宽
                        //cells.SetRowHeight(0, 30); //自定义高
                    }
                    //生成数据行 
                    for (int i = 0; i < Rownum; i++)
                    {
                        for (int k = 0; k < Colnum; k++)
                        {
                            cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加数据
                            cells[1 + i, k].SetStyle(conStyle); //添加样式 style
                        }                   
                    }
                    sheet.AutoFitColumns(); //自适应宽
                    book.Save(filepath); //保存
                    GC.Collect();
                }
                catch (Exception e)
                {
                    //logger.Error("生成excel出错:" + e.Message);
                }
            }
    
    
            /// <summary>
            /// DataTable数据生成Excel文件,包含标题名(调用第三方Aspose.Cells.dll插件)
            /// </summary>
            /// <param name="data">导入Excel的dataTable数据源</param>
            /// <param name="filepath">保存的文件路径</param>
            /// <param name="excelTitle">excel标题名称</param>
            public static void CreateExcelByAsposeCells(DataTable data, string filepath,string excelTitle)
            {
                try
                {
                    Workbook book = new Workbook(); //创建工作簿
                    Worksheet sheet = book.Worksheets[0]; //创建工作表
                    Cells cells = sheet.Cells; //单元格
    
                    //创建标题行的样式
                    Style titleStyle = book.Styles[book.Styles.Add()];
                    titleStyle.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
                    titleStyle.Font.Name = "宋体"; //字体
                    titleStyle.Font.IsBold = true; //设置粗体
                    titleStyle.Font.Size = 15; //设置字体大小
                    titleStyle.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色(黄绿色)
                    titleStyle.Pattern = Aspose.Cells.BackgroundType.Solid; //背景样式
                    titleStyle.IsTextWrapped = true; //单元格内容自动换行
                    titleStyle.IsJustifyDistributed = true;
       
    
                    //创建 列名行的样式
                    Style style = book.Styles[book.Styles.Add()];
                    style.Borders[BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
                    style.Borders[BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
                    style.Borders[BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
                    style.Borders[BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线   
                    style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
                    style.ForegroundColor = System.Drawing.Color.FromArgb(230, 230, 250); //背景色(淡紫色)
                    style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景样式
                    style.Font.Name = "宋体"; //字体
                    style.Font.IsBold = true; //设置粗体
                    style.Font.Size = 12; //设置字体大小
    
                    //创建 数据行的样式
                    Style conStyle = book.Styles[book.Styles.Add()];
                    conStyle.Borders[BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
                    conStyle.Borders[BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
                    conStyle.Borders[BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
                    conStyle.Borders[BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线
                    conStyle.Font.Name = "宋体";
                    conStyle.HorizontalAlignment = TextAlignmentType.Left;  //单元格内容的水平对齐方式文字居中
                    conStyle.Font.IsBold = false;
                    conStyle.Font.Size = 11;
    
                    //表格填充数据
                    int Colnum = data.Columns.Count;//表格列数 
                    int Rownum = data.Rows.Count;//表格行数 
    
                    //生成标题行
                    for (int t = 0; t < Colnum; t++)
                    {
    
                        cells[0, t].PutValue(excelTitle); //添加表头
                        cells[0, t].SetStyle(titleStyle); //添加样式
                    }
                    //合并第一行的所有列
                    cells.Merge(0, 0, 1, Colnum);
    
                    //生成列名行 
                    for (int i = 0; i < Colnum; i++)
                    {
                        cells[1, i].PutValue(data.Columns[i].ColumnName); //添加表头
                        cells[1, i].SetStyle(style); //添加样式
                    }
                    //生成数据行 
                    for (int i = 0; i < Rownum; i++)
                    {
                        for (int k = 0; k < Colnum; k++)
                        {
                            cells[1+1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加数据
                            cells[1+1 + i, k].SetStyle(conStyle); //添加样式 style
                        }
                    }
                    sheet.AutoFitColumns(); //自适应宽
                    book.Save(filepath); //保存
                    GC.Collect();
                }
                catch (Exception e)
                {
                    
                }
            }
        }

    代码调用方法

           /// <summary>
           /// 将DataTable转成Excel文件
           /// </summary>
            public void ExportExcel() {
                //获取tab数据
                DataTable tabs = GetDataTableDemo();
    
                //执行导出的数据
               // ExportHelper.CreateExcelByAsposeCells(tabs, "D:\Excel导出测试.xlsx");
                //执行导出的数据(带标题)
                ExportHelper.CreateExcelByAsposeCells(tabs, "D:\Excel导出测试(标题).xlsx","高一(3)班信息表");
    
            }

    运行生成效果图

     

     附上Demo下载地址:

    链接:https://pan.baidu.com/s/1Q1KpW3YydU_Va1_5NFMZNA
    提取码:1234

  • 相关阅读:
    深入理解JVM(六)——类加载器原理
    深入理解JVM(五)——垃圾回收器
    深入理解JVM(四)——垃圾回收算法
    Let's Encrypt,免费好用的 HTTPS 证书
    开源框架(整理)
    【转】JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐(二)
    C#开源项目大全
    window平台搭建Hudson服务器
    Git 常用命令
    Mongodb Windows 集群
  • 原文地址:https://www.cnblogs.com/xielong/p/14282198.html
Copyright © 2011-2022 走看看