方法一:循环DataTable单元格内容拼接字符串,利用StreamWriter的Write方法将字符串写入Excel文件中

这种方法很实现很简单。拼接字符串时,每个单元格之间添加'\t'(表示一个占位符,相当于Tab键),每行之间添加"\r\n"(表示换行)。

但是这种方法不能设置Excel单元格样式

1、定义一个方法GetSavePath(),利用SaveFileDialog控件选择Excel文件要保存的路径。

private string GetSavePath()
{
    using (SaveFileDialog savePath = new SaveFileDialog())
    {
        savePath.Title = "选择要保存的路径和文件名";
        savePath.Filter = "Excel 97-2003|*.xls";
        savePath.RestoreDirectory = true; //是否记录上次选择的路径
        savePath.FileName = "导出的表格";
        if (savePath.ShowDialog() == DialogResult.OK)
        {
            return savePath.FileName; //返回Excel文件的保存路径和名字
        }
        return "Cancel";
    }
}

2、定义一个方法GetSWstr(),将DataTable内容转换成字符串。

private string GetSWstr(DataTable table2)
{
    StringBuilder strHead = new StringBuilder ();
    //先添加每列标题
    ; i < table2.Columns.Count; i++)
    {
        strHead.Append(table2.Columns[i].Caption.Trim() + '\t');
    }
    strHead.Append("\r\n");
    //再依次添加每行内容
    ; i < table2.Rows.Count; i++)
    {
        ; j < table2.Columns.Count; j++)
        {
            strHead.Append(table2.Rows[i][j].ToString().Trim() + '\t');
        }
        strHead.Append("\r\n");
    }
    return strHead.ToString();
}

3、定义一个方法 WriteToExcel(),将内容写入Excel文件

public string WriteToExcel(String str, string filePath)
{
    try
    {
        using (StreamWriter sw = new StreamWriter(filePath, false, System.Text.Encoding.Default)) //写入流
        {
            sw.Write(str);
        }
        return "导出Execl成功!";
    }
    catch (Exception ex)
    {
        return "导出Execl失败!原因:" + ex.Message;
    }
}

4、调用WriteToExcel

WriteToExcel(GetSWstr(table), GetSavePath());

方法二:利用COM组件实现Excel操作,可以设置Excel格式

这种操作也很简单,在定义好excel对象后,可以通过 excel.Cells[i, j]=? 对某一个单元格赋值。

也可以通过 range = excel.Range[excel.Cells[i, 1], excel.Cells[i, 3]]; 获取一个单元格区域,然后设置range的属性就可以设置单元格样式或值

range.MergeCells = true;  //合并单元格

range.Value = "标题";

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Range range = null;
try
{
    //第一行的第一列到第六列
    range = excel.Range[excel.Cells[, ], excel.Cells[, ]];
    range.MergeCells = true; ///合并单元格
    range.Font.Bold = true; //黑体
    range.Font.Size = ; //20号字体
    range.HorizontalAlignment = XlHAlign.xlHAlignCenter; //水平居中
    range.Value = "产品工序分解表";   //合并单元格的值
}
catch(Exception ex)
{
    return "导出失败!错误原因:" + ex.Message;
}
finally
{
    book = null;
    range = null;
    GC.Collect();
    GC.WaitForPendingFinalizers();
    excel.Quit();
    excel = null;
}

将DataTable内容导出到Excel表格的两种方法的更多相关文章

  1. .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格

    一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...

  2. js如何动态创建表格(两种方法)

    js如何动态创建表格(两种方法) 一.总结 一句话总结: 1.方法一:写好创建表格的html代码,将之赋值给div的innerHTML. 2.方法二.直接用创建好的table元素的方法insertRo ...

  3. 用easyui实现查询条件的后端传递并自动刷新表格的两种方法

    用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将 ...

  4. .NET CORE 2.1 导出excel文件的两种方法

    最近在做 MVC 项目的时候遇到项目的导出,下面总结下两种导出到excel 的方法 第一种方法: 将文件写到本地,然后返回这个File 或者返回这个 File 的绝对地址  其中  _hostingE ...

  5. LayUI使用弹窗重载父级数据表格的两种方法

    参考LayUI官方文档,在子窗口中重载父级数据表格找到以下两种方法: 1.子窗口中重载:在子窗口中直接调用父级talbe的reload方法. $("body").on(" ...

  6. C#将数据集DataSet中的数据导出到EXCEL文件的几种方法

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...

  7. Java导出Excel文件的两种方法

    将数据以Excel表格的形式导出:首先下载poi的jar包,导入项目中,或者使用maven仓库管理,在pom文件添加:<dependency>    <groupId>org. ...

  8. mysql导出csv/excel文件的几种方法,mysql的load导入csv数据

    方法一 php教程用mysql的命令和shell select * into outfile './bestlovesky.xls' from bestlovesky where 1 order by ...

  9. delphi 导出到excel的第1种方法

    第一种方法delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):bo ...

随机推荐

  1. 设计模式16:迭代模式(Iterator)

    迭代模式: 它提供了一种方法没有对象的顺序访问聚合对象的暴漏底层的细节. Provide a way to access the elements of an aggregate object seq ...

  2. android CheckBox RadioButton 照片和文字的间距问题

    利用自身的定义CheckBox 要么RadioButton时间.定义自己的图标和文字在不同的手机显示不同的音高.有时不太好控制,下面是我自己的定义CheckBox: 在Layout在下面xml: &l ...

  3. 一个好用的web甘特图

      前些天一直在弄web甘特图,发现网上很多web甘特图框架,但大部分是收费的.偶尔发现了向日葵甘特图 感觉不错,特此写下来一方面当做记录,另一方面也为寻找web甘特图的同学们少走一些弯路,双赢嘛~ ...

  4. python 导入库问题

    最终解决如下面:我不知道有没有多余的空间 from django.conf import settings from sys import path path.extend(['/home/zoues ...

  5. Arcgis sde 10.1您不能创建在安装后的空间库,提示User has privileges required to create database objects.

    Geodatabase在10.1版本号也有较大的改进和更新,在用户体验和性能上都有变化,在实际的工作中可能会碰到各种奇怪的问题(事实上都是有原因的,须要我们对其工作机制有所了解才干避免其发生):近期须 ...

  6. NYNU_省赛选拔题(6)

    题目描述 有一天,小米找到了一个藏宝的迷宫地图,迷宫在一个沙漠里有,迷宫里面有许多宝藏.迷宫里可能有N个藏宝地点,用1到K标记.藏宝地点之间最多有一条通路相连.标记1为迷宫的进出口. 他已经知道其中K ...

  7. CSDN下载频道2014年11月4日本-5日常维护公告

    尊敬的用户: CSDN于2005年推出了下载服务.经过数年的发展.下载频道的用户已经为无数用户提供了帮助,分享500万的技术资源. CSDN下载频道将于2014年11月4日23点至11月5日8点进行积 ...

  8. lua学习笔记10:lua简单的命令行

    前面反复使用的命令行,好学喜欢命令行: 一 格公式 lua [options][script][args] 两 详细命令 -e 直接命令传递一个lua -l 加载文件 -i 进入交互模式 比例如.端子 ...

  9. iOS开发分析&quot;秘密&quot;App内容页面的效果(两)

    @我前几天写的"秘密"的Cell制品的效果,想要的效果还是有差距,并且扩展性非常不好,于是重写封装,把总体视图都放到scrollView中,基本是和secret app 一模一样的 ...

  10. Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试

    Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试   需要FQ才能安装,使用时应该不用FQ了,除非使用postman的历史记录功能:   非常棒的C ...