C#中 导入和导出Excel的方法
using System.Data;
using System.Data.OleDb;
/// <summary>
/// Excel转为DataTable
/// </summary>
/// <param name="ExcelName"></param>
/// <returns></returns>
public static DataTable ExcelToDataTable(string filePath)
{
string strCon = "Provider = Microsoft.ACE.OLEDB.12.0 ;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;'";// IMEX=1为导入模式
OleDbConnection olecon = new OleDbConnection(strCon);
olecon.Open();
DataTable dt = olecon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
]["TABLE_NAME"].ToString();//获取Excel表名
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", strCon);
DataTable mydt = new DataTable();
myda.Fill(mydt);
olecon.Close();
return mydt;
}
/// <summary>
/// DataTable导出Excel
/// GridView作为中间数据格式转换用途
/// </summary>
/// <param name="page">Page对象</param>
/// <param name="columns">导出数据源</param>
/// <param name="dt">导出显示列与对应数据列,Key:Excel列名,Value:数据源列名</param>
/// <param name="fileName">导出文件名,无需带后缀</param>
public static void GridViewToExcel(Page page, DataTable dt, Dictionary<string, string> columns, string fileName)
{
|| columns == )
{
return;
}
if (string.IsNullOrEmpty(fileName.Trim()))
{
fileName = "DataToExcel";
}
DataTable temp = new DataTable();
foreach (KeyValuePair<string, string> item in columns)
{
temp.Columns.Add(item.Key);
}
foreach (DataRow dr in dt.Rows)
{
DataRow drs = temp.NewRow();
foreach (KeyValuePair<string, string> item in columns)
{
drs[item.Key] = dr[item.Value];
}
temp.Rows.Add(drs);
}
GridView gv = new GridView();
gv.DataSource = temp;
gv.AllowPaging = false;
gv.EnableViewState = false;
gv.DataBind();
StringWriter strWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(strWriter);
page.Response.Clear();
page.Response.Buffer = true;
page.Response.Charset = "GB2312";
page.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
page.Response.ContentType = "application/ms-excel";
gv.RenderControl(htmlWriter);
page.Response.Write(strWriter.ToString());
page.Response.End();
}
/// <summary>
/// DataTable导出Excel,自定义Html Table格式
/// </summary>
/// <param name="page">Page对象</param>
/// <param name="dt">DataTable</param>
/// <param name="columns">导出显示列与对应数据列,Key:Excel导出列名,Value:数据源列名</param>
/// <param name="fileName">导出文件名,无需带后缀</param>
public static void ToExcel(Page page, DataTable dt1, Dictionary<string, string> columns, string fileName)
{
|| columns == )
{
return;
}
if (string.IsNullOrEmpty(fileName.Trim()))
{
fileName = "DataToExcel";
}
page.Response.Clear();
page.Response.Buffer = true;
page.Response.Charset = "GB2312";
page.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
page.Response.ContentType = "application/ms-excel";
page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("<html xmlns:x=\"urn><head>\n");
builder.Append("<meta http-equiv=\"Content-Language\" content=\"zh-cn\"><meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"></head>");
builder.Append("<table border=1 style=\"vnd.ms-excel.numberformat:@\"><tr>");
foreach (KeyValuePair<string, string> item in columns)
{
builder.Append("<th>" + item.Key + "</th>");
}
builder.Append("</tr>");
foreach (DataRow item in dt1.Rows)
{
builder.Append("<tr>");
foreach (KeyValuePair<string, string> kv in columns)
{
if (IsDateTime(item[kv.Value].ToString()))
builder.Append("<td style=\"vnd.ms-excel.numberformat:yyyy-MM-dd\">" + item[kv.Value] + "</td>");
else
builder.Append("<td>" + item[kv.Value] + "</td>");
}
builder.Append("</tr>");
}
builder.Append("</table>");
page.Response.Write(builder.ToString());
page.Response.Flush();
page.Response.End();
}
C#中 导入和导出Excel的方法的更多相关文章
- Java中导入、导出Excel
原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已 ...
- 我是陌生人 Java中导入、导出Excel
我是陌生人 Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是: ...
- [转]Java中导入、导出Excel
原文地址:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样 ...
- 在mvc4中上传、导入和导出excel表方法总结
通过excel的导入导出练习,使用NPOI组件还是方便一点,所有下面就以NPOI下的导入导出给出实例,通过网页导入excel表,首先上传,再导入数据到库,这里为了方便就不导入到库中了,直接拿到数据.导 ...
- asp.net中导出Excel的方法
一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...
- Java中使用poi导入、导出Excel
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件
在之前的文章中,我们为大家分别详细介绍了在JavaScript.React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的"三部曲",本文我们将为大家 ...
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
先上代码 <script type="text/javascript" language="javascript"> var idTmr; ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
随机推荐
- fast db 学习
见 http://code.google.com/p/mmdbsolution/source/browse/trunk/+mmdbsolution+--username+SiliangDu1987%4 ...
- [AX2012 R3]在SSRS报表中使用QR二维码
AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...
- iOS开发问题之Could not instantiate class named NSLayoutConstraint
这个问题在ios6.0之前的版本中运行会出现,因为使用Xcode 4.5之后的版本新建项目默认是选中AutoLayout的,但这个特性是在iOS6.0之后的版本中才支持的. 解决办法是选中.stroy ...
- javascript方法 call()和apply()的用法
先上代码: apply()方法示例 /*定义一个人类*/ function Person(name,age) { this.name=name; this.age=age; } /*定义一个学生类*/ ...
- 正则表达式工具RegexBuddy使用教程(原创自Zjmainstay)
从<我眼里的正则表达式(入门)>这个文章,到<深入正则表达式应用>,再到后来专门创建的正则QQ群"专精正则表达式",到现在已经过去2年时间了.在文章和群里一 ...
- MySQL降权:MySQL以Guests帐户启动设置方法
MySQL安装到Windows上,默认是以SYSTEM权限运行,如下图: SYSTEM是超级管理员.不是必须,不推荐用此权限运行任何程序. 本文将演示如何在GUEST帐户下运行MySQL. 第一步:建 ...
- 重构第1天:封装集合(Encapsulate Collection)
理解:封装集合就是把集合进行封装,只提供调用者所需要的功能行借口,保证集合的安全性. 详解:在大多的时候,我们没有必要把所有的操作暴露给调用者,只需要把调用者需要的相关操作暴露给他,这种情况中下我们就 ...
- Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...
- Unit Of Work--工作单元(一)
简介 最近忙着新项目的架构,已经有一段时间没有更新博客了,一直考虑着要写些什么,直到有一天跟朋友谈起他们公司开发数据层遇到的一些问题时,我想应该分享一些项目中使用的数据访问模式. 虽然最近一直都在使用 ...
- LOD设置
Level of detail: 使用多个不同复杂度的mesh来表示一个object,当物体离摄像机越远时,就是用更加low-detail的mesh,反之越近就越使用越精细的mesh. 组件:LOD ...