C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码

本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行。本例子是上一篇 DataTable 导出 Excel 的进阶,除了上一篇提到的处理乱码问题,本例还添加了处理多行表头、合并单元格的功能及处理中文文件名乱码问题,应该可以满足日常开发的需要了。废话不多说了,直接上代码:using System;
摘要由CSDN通过智能技术生成

本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行。

本例子是上一篇 DataTable 导出 Excel 的进阶,除了上一篇提到的处理乱码问题,本例还添加了处理多行表头、合并单元格的功能及处理中文文件名乱码问题,应该可以满足日常开发的需要了。

废话不多说了,直接上代码:

using System;
using System.Collections.Generic;
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;

/// <summary>
/// Common 的摘要说明
/// 作者:李伟波
/// 时间:2012-10-18
/// </summary>
public class Common
{
    public Common()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    /// <summary>
    /// 描述:把DataTable内容导出excel并返回客户端 
    /// 作者:李伟波
    /// 时间:2012-10-18
    /// </summary>
    /// <param name="dtData"></param>
    /// <param name="header"></param>
    /// <param name="fileName"></param>
    /// <param name="mergeCellNums">要合并的列索引字典 格式:列索引-合并模式(合并模式 1 合并相同项、2 合并空项、3 合并相同项及空项)</param>
    /// <param name="mergeKey">作为合并项的标记列索引</param>
    public static void DataTable2Excel(System.Data.DataTable dtData, TableCell[] header, string fileName, Dictionary<int, int> mergeCellNums, int? mergeKey)
    {
        System.Web.UI.WebControls.GridView gvExport = null;
        // 当前对话 
        System.Web.HttpContext curContext = System.Web.HttpContext.Current;
        // IO用于导出并返回excel文件 
        System.IO.StringWriter strWriter = null;
        System.Web.UI.HtmlTextWriter htmlWriter = null;

        if (dtData != null)
        {
            // 设置编码和附件格式 
            curContext.Response.ContentType = "application/vnd.ms-excel";
           
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在 C#导出 Excel合并单元,可以使用 `Microsoft.Office.Interop.Excel` 库。下面是一个示例代码,演示了如何导出一个 DataTable合并某些单元: ```csharp using System; using System.Data; using System.IO; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelExportDemo { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void ExportButton_Click(object sender, EventArgs e) { // 创建一个新的 Excel 应用程序实例 Excel.Application excelApp = new Excel.Application(); excelApp.Visible = false; // 创建一个工作簿并获取其工作表 Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = workbook.ActiveSheet; // 获取 DataTable 的列数和数 int columnCount = dataTable.Columns.Count; int rowCount = dataTable.Rows.Count; // 写入标题 for (int i = 0; i < columnCount; i++) { worksheet.Cells[1, i + 1] = dataTable.Columns[i].ColumnName; } // 写入数据 for (int i = 0; i < rowCount; i++) { for (int j = 0; j < columnCount; j++) { worksheet.Cells[i + 2, j + 1] = dataTable.Rows[i][j].ToString(); } } // 合并单元 Excel.Range range = worksheet.Range[worksheet.Cells[1, 1], worksheet.Cells[1, columnCount]]; range.Merge(); // 设置合并单元的样式 range.Font.Size = 16; range.Font.Bold = true; range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; // 保存 Excel 文件 SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel 文件|*.xlsx"; saveFileDialog.Title = "保存 Excel 文件"; saveFileDialog.ShowDialog(); if (saveFileDialog.FileName != "") { workbook.SaveAs(saveFileDialog.FileName); workbook.Close(); excelApp.Quit(); MessageBox.Show("导出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("未选择文件路径!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } ``` 在这个示例中,我们首先在标题合并了所有单元,并设置了合并单元的样式。你可以根据需要更改合并的范围、样式等。 希望这个示例对你有所帮助!如果还有其他问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值