文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#怎么把DataTable导出为Excel文件

2023-06-29 22:55

关注

本文小编为大家详细介绍“C#怎么把DataTable导出为Excel文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么把DataTable导出为Excel文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作。DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的DataTable转化为Excel文件。实现关键代码如下:

方法一:

/// <summary>/// DataTable数据导出Excel/// </summary>/// <param name="data"></param>/// <param name="filepath"></param>public static void DataTableExport(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; //单元格        //创建样式        Aspose.Cells.Style style = book.Styles[book.Styles.Add()];        style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线          style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线          style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线          style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线           style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中        style.Font.Name = "宋体"; //字体        style1.Font.IsBold = true; //设置粗体        style.Font.Size = 11; //设置字体大小        //style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色        //style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景样式        //style.IsTextWrapped = true; //单元格内容自动换行                //表格填充数据        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(style); //添加样式            }            cells[1 + i, 5].Formula = "=B" + (2 + i) + "+C" + (2 + i);//给单元格设置计算公式,计算班级总人数        }        sheet.AutoFitColumns(); //自适应宽        book.Save(filepath); //保存        GC.Collect();    }    catch (Exception e)    {        logger.Error("生成excel出错:" + e.Message);    }}

方法二:

public void ToExcel(DataTable dt)    {        #region 3s          var FilePath = @"D:\ToExcel\";//产生Excel文件路径        DeleteFile(FilePath);        //创建全新的Workbook         var workbook = new HSSFWorkbook();//一個sheet最多65536行        var count = 0;        for (double i = 0; i < Convert.ToDouble(dt.Rows.Count) / Convert.ToDouble(65534); i++)//每个Excel文件的一个页签只能存放65536行数据        {            var row_index = 0;            //创建Sheet            workbook.CreateSheet("Sheet" + i);            //根据Sheet名字获得Sheet对象              var sheet = workbook.GetSheet("Sheet" + i);            IRow row;            row = sheet.CreateRow(row_index);            //写入标题            for (int j = 0; j < dt.Columns.Count; j++)            {                row.CreateCell(j).SetCellValue(dt.Columns[j].Caption.ToString());            }            row = sheet.CreateRow(++row_index);            //写入数据            for (int j = 0; j < (dt.Rows.Count - count > 65534 ? 65534 : dt.Rows.Count - count); j++)            {                var r = dt.Rows[j + count];                for (int k = 0; k <dt.Columns.Count; k++)                {                    row.CreateCell(k).SetCellValue(r[k].ToString());                    //如果是数字,判断是否需要转换为数字                    //if (IsNumeric(r[k].ToString()))                    //{                    //    row.CreateCell(k).SetCellValue(Convert.ToDouble(r[k].ToString()));                    //}                    //else                    //{                    //    row.CreateCell(k).SetCellValue(r[k].ToString());                    //}                }                row = sheet.CreateRow(++row_index);            }            count += row_index - 2;        }        //保存Workbook方式一: 以文件形式保存到服务器中(每次导出都会生成一个文件,慎重使用)        var FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";        var sw = File.Create(FilePath + FileName);        workbook.Write(sw);        sw.Close();        var EC = new ExcelConverter();        EC.WebopenExcel(Response, FilePath + FileName);        #endregion    }

读到这里,这篇“C#怎么把DataTable导出为Excel文件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯