将DataTable内容导出到Excel表格的两种方法
方法一:循环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表格的两种方法的更多相关文章
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
		
一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...
 - js如何动态创建表格(两种方法)
		
js如何动态创建表格(两种方法) 一.总结 一句话总结: 1.方法一:写好创建表格的html代码,将之赋值给div的innerHTML. 2.方法二.直接用创建好的table元素的方法insertRo ...
 - 用easyui实现查询条件的后端传递并自动刷新表格的两种方法
		
用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将 ...
 - .NET CORE 2.1 导出excel文件的两种方法
		
最近在做 MVC 项目的时候遇到项目的导出,下面总结下两种导出到excel 的方法 第一种方法: 将文件写到本地,然后返回这个File 或者返回这个 File 的绝对地址 其中 _hostingE ...
 - LayUI使用弹窗重载父级数据表格的两种方法
		
参考LayUI官方文档,在子窗口中重载父级数据表格找到以下两种方法: 1.子窗口中重载:在子窗口中直接调用父级talbe的reload方法. $("body").on(" ...
 - C#将数据集DataSet中的数据导出到EXCEL文件的几种方法
		
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...
 - Java导出Excel文件的两种方法
		
将数据以Excel表格的形式导出:首先下载poi的jar包,导入项目中,或者使用maven仓库管理,在pom文件添加:<dependency> <groupId>org. ...
 - mysql导出csv/excel文件的几种方法,mysql的load导入csv数据
		
方法一 php教程用mysql的命令和shell select * into outfile './bestlovesky.xls' from bestlovesky where 1 order by ...
 - delphi 导出到excel的第1种方法
		
第一种方法delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):bo ...
 
随机推荐
- NSIS:使用WinVer.nsh头文件判断操作系统版本
			
原文 NSIS:使用WinVer.nsh头文件判断操作系统版本 AtLeastWin<version> 检测是否高于指定版本 IsWin<version> 检测指定版本(唯一限 ...
 - HDU  4085 Steiner树模板称号
			
Dig The Wells Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
 - 金蝶K3无法创建数据库,请查看该文件夹的错误的解决方法。
			
无法创建数据库! 检查你的文件夹C:\XXX\DATA是否存在.并且该系统是不低,或SQL Server服务的启动用户不具备<K3ERP\DBFILE>文件夹的写权限.请改动Windows ...
 - freemarker定义自己的标记(三)-nested说明
			
freemarker定义自己的标记 1.nested指令 是可选的,能够在<#macro>和</#macro>之间使用在不论什么位置和随意次数 2.演示样例说明 <#ma ...
 - Struts1——离BeanUtils看struts其原理1
			
在Struts中非常典型的特点就是使用了ActionForm来搜集表单数据,可是搜集到的表单数据所有都是String类型的.假设我们直接拿来使用我们会面临一个非常麻烦的问题就是频繁的类型装换. Str ...
 - httppost body的实现, 和body是gb2312等编码的实现
			
使用的是http4.X 版本,里面推荐使用的post是key value的形式 List<NameValuePair> formparams = new ArrayList<Name ...
 - 如何使用Linq或EF来对数据去重——Distinct方法详解
			
刚开始接触LINQ时使用distinct去重时和大家一样遇到了一些麻烦,很感谢 http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.htm ...
 - DevExpress asp.net 导出Excel 自动开启迅雷问题,默认保存为aspx页面
			
目前采取曲线救国策略: 利用MVC ..... <dx:ASPxGridView ID="ASPxGridView1" runat="server" Au ...
 - java阅读器hdfs单纯demo
			
周围环境:eclipse + eclipse hadoop插入. hadoop + rhel6.4 package test; import java.io.IOException; import j ...
 - bootstrap collapse  MVC  .net漂亮的折叠List
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...