IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> C#实现Excel导出 -> 正文阅读

[开发工具]C#实现Excel导出

C#实现Excel导出

Excel导出广泛应用于管理、统计、金融等众多领域。

C#实现Excel导出需要引用Aspose.Cells。

Excel导出方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Aspose.Cells;
using System.Data;

/// <summary>
/// Excel 文件操作
/// </summary>
public class ExcelFile
{

    /// <summary>
    /// 获取工作本
    /// </summary>
    /// <returns>Workbook</returns>
    public static Workbook GetWorkBook()
    {
        Workbook workbook = new Workbook(); //工作簿 
        return workbook;
    }


    /// <summary>
    /// DataTable转Excel
    /// </summary>
    /// <param name="workbook">工作薄</param>
    /// <param name="dataTable">datatable 数据源</param>
    /// <param name="tableName">表格名称</param>
    /// <param name="exStyle">excel 整体样式</param>
    /// <returns>MemoryStream</returns>
    public static System.IO.MemoryStream OutStream(Workbook workbook, DataTable dataTable, string tableName, ExcelStyle exStyle)
    {
        Worksheet sheet = workbook.Worksheets[0]; //工作表 
        Cells cells = sheet.Cells;//单元格 
        int Colnum = dataTable.Columns.Count;//表格列数 
        int Rownum = dataTable.Rows.Count;//表格行数 
        int index = 0;

        if (tableName != null)
        {
            //生成行1 标题行    
            cells.Merge(0, 0, 1, Colnum);//合并单元格 
            cells[index, 0].PutValue(tableName);//填写内容 
            if (exStyle.TableNameStyle != null)
            {
                cells[index, 0].SetStyle(exStyle.TableNameStyle);
            }
            index++;
            cells.SetRowHeight(0, 38);
        }

        //生成行2 列名行 
        for (int i = 0; i < Colnum; i++)
        {
            cells[index, i].PutValue(dataTable.Columns[i].ColumnName);
            if (exStyle.TitleStyle != null)
            {
                cells[index, i].SetStyle(exStyle.TitleStyle);
            }
            cells.SetRowHeight(index, 25);
        }

        index++;
        //生成数据行 
        for (int i = 0; i < Rownum; i++)
        {
            for (int k = 0; k < Colnum; k++)
            {
                cells[index + i, k].PutValue(dataTable.Rows[i][k].ToString());
                if (exStyle.ContentStyle != null)
                {
                    cells[index + i, k].SetStyle(exStyle.ContentStyle);
                }
            }
            cells.SetRowHeight(index + i, 24);
        }
        int columnCount = cells.MaxColumn;  //获取表页的最大列数
        int rowCount = cells.MaxRow;        //获取表页的最大行数

        for (int col = 0; col < columnCount; col++)
        {
            sheet.AutoFitColumn(col, 0, rowCount);
        }
        //for (int col = 0; col < columnCount; col++)
        //{
        //    cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + 30);
        //}

        System.IO.MemoryStream ms = workbook.SaveToStream();
        return ms;
    }


    /// <summary>
    /// DataTable转Excel
    /// </summary>
    /// <param name="workbook">工作薄</param>
    /// <param name="dataTable">datatable 数据源</param>
    /// <param name="tableName">表格名称</param>
    /// <param name="reportInfo">报表信息</param>
    /// <param name="exStyle">excel 整体样式</param>
    /// <returns>MemoryStream</returns>
    public static System.IO.MemoryStream OutStream(Workbook workbook, DataTable dataTable, string tableName, string reportInfo, ExcelStyle exStyle)
    {
        Worksheet sheet = workbook.Worksheets[0]; //工作表 
        Cells cells = sheet.Cells;//单元格 
        int Colnum = dataTable.Columns.Count;//表格列数 
        int Rownum = dataTable.Rows.Count;//表格行数 
        int index = 0;

        if (tableName != null)
        {
            //生成行1 标题行    
            cells.Merge(0, 0, 1, Colnum);//合并单元格 
            cells[index, 0].PutValue(tableName);//填写内容 
            if (exStyle.TableNameStyle != null)
            {
                cells[index, 0].SetStyle(exStyle.TableNameStyle);
            }
            index++;
            cells.SetRowHeight(0, 38);
        }


        if (reportInfo != null)
        {
            //生成行2 标题行    
            cells.Merge(1, 0, 1, Colnum);//合并单元格 
            cells[index, 0].PutValue(reportInfo);//填写内容 
            if (exStyle.TableNameStyle != null)
            {
                cells[index, 0].SetStyle(exStyle.ReprotInfoStyle);
            }
            index++;
            cells.SetRowHeight(0, 38);
        }

        //生成行1/2/3 列名行 
        for (int i = 0; i < Colnum; i++)
        {
            cells[index, i].PutValue(dataTable.Columns[i].ColumnName);
            if (exStyle.TitleStyle != null)
            {
                cells[index, i].SetStyle(exStyle.TitleStyle);
            }
            cells.SetRowHeight(index, 25);
        }

        index++;
        //生成数据行 
        for (int i = 0; i < Rownum; i++)
        {
            for (int k = 0; k < Colnum; k++)
            {
                cells[index + i, k].PutValue(dataTable.Rows[i][k].ToString());
                if (exStyle.ContentStyle != null)
                {
                    cells[index + i, k].SetStyle(exStyle.ContentStyle);
                }
            }
            cells.SetRowHeight(index + i, 24);
        }
        int columnCount = cells.MaxColumn;  //获取表页的最大列数
        int rowCount = cells.MaxRow;        //获取表页的最大行数

        for (int col = 0; col < columnCount; col++)
        {
            sheet.AutoFitColumn(col, 0, rowCount);
        }
        for (int col = 0; col < columnCount; col++)
        {
            cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + 30);
        }

        System.IO.MemoryStream ms = workbook.SaveToStream();
        return ms;
    }
}


/// <summary>
/// Excle样式定义类
/// </summary>
public class ExcelStyle
{
    private Style tableNameStyle;
    /// <summary>
    /// 表名称样式
    /// </summary>
    public Style TableNameStyle
    {
        get { return tableNameStyle; }
        set { tableNameStyle = value; }
    }

    private Style reprotInfoStyle;
    /// <summary>
    /// 统计报表信息样式
    /// </summary>
    public Style ReprotInfoStyle
    {
        get { return reprotInfoStyle; }
        set { reprotInfoStyle = value; }
    }


    private Style titleStyle;
    /// <summary>
    /// 表头样式
    /// </summary>
    public Style TitleStyle
    {
        get { return titleStyle; }
        set { titleStyle = value; }
    }
    private Style contentStyle;
    /// <summary>
    /// 表格类容样式
    /// </summary>
    public Style ContentStyle
    {
        get { return contentStyle; }
        set { contentStyle = value; }
    }
}

调用方法

public void Excel(){
	DataTable dataTable = dataTable ();//执行SQL语句返回DataTable
	
	Aspose.Cells.Workbook workbook = ExcelFile.GetWorkBook();
	//为标题设置样式
	Aspose.Cells.Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
	styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
	styleTitle.Font.Name = "宋体";//文字字体
	styleTitle.Font.Size = 18;//文字大小
	styleTitle.Font.IsBold = true;//粗体
	//样式2
	Aspose.Cells.Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
	style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
	style2.Font.Name = "宋体";//文字字体
	style2.Font.Size = 14;//文字大小
	style2.Font.IsBold = true;//粗体
	style2.IsTextWrapped = false;//单元格内容自动换行
	style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
	style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
	style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
	style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
	//样式3
	Aspose.Cells.Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式
	style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中
	style3.Font.Name = "宋体";//文字字体
	style3.Font.Size = 12;//文字大小
	style3.IsTextWrapped = false;
	style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
	style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
	style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
	style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
	ExcelStyle exStyle = new ExcelStyle();
	exStyle.ContentStyle = style3;
	exStyle.TitleStyle = style2;
	exStyle.TableNameStyle = styleTitle;
	System.IO.MemoryStream ms = ExcelFile.OutStream(workbook, dataTable, "Excel文件名", exStyle);
	HttpResponse response = HttpContext.Current.Response;
	response.Clear();
	response.Buffer = true;
	response.Charset = "utf-8";
	response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode("Excel文件名.xls"));
	response.ContentEncoding = System.Text.Encoding.UTF8;
	response.ContentType = "application/ms-excel; charset=UTF-8 ";
	response.BinaryWrite(ms.ToArray());
	response.End();
}

例:

执行SQL语句如下:
在这里插入图片描述
导出至Excel文件信息如下:
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:12:07  更:2022-03-21 21:13:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:46:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码