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的方法的更多相关文章

  1. Java中导入、导出Excel

    原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已 ...

  2. 我是陌生人 Java中导入、导出Excel

    我是陌生人 Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是: ...

  3. [转]Java中导入、导出Excel

    原文地址:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样 ...

  4. 在mvc4中上传、导入和导出excel表方法总结

    通过excel的导入导出练习,使用NPOI组件还是方便一点,所有下面就以NPOI下的导入导出给出实例,通过网页导入excel表,首先上传,再导入数据到库,这里为了方便就不导入到库中了,直接拿到数据.导 ...

  5. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  6. Java中使用poi导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  7. 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

    在之前的文章中,我们为大家分别详细介绍了在JavaScript.React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的"三部曲",本文我们将为大家 ...

  8. 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; ...

  9. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

随机推荐

  1. Intellij idea 乱码问题(英文操作系统)

    英文操作系统导致 Debug 下的变量查看时显示乱码,可通过改变字体解决此问题.

  2. 优先队列求解Huffman编码 c++

    优先队列小析      优先队列的模板: template <class T, class Container = vector<T>,class Compare = less< ...

  3. ios辅助功能之voiceover实战

      一个元素朗读的内容可分为以下4个部分(4部分按先后顺序朗读) 1. Label:元素的标题 2. Value:元素的值(可选) 3. Traits:元素的特征,即类型,包含: 按钮/链接/搜索框/ ...

  4. [AX]AX2012 Number sequence framework :(三)再谈Number sequence

    AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...

  5. [AX2012 R3]关于Named user license report

    Named user license报表是用来统计各种授权类型用户数的,这里来看看报表数据具体是如何来的.这是一个SSRS的报表,最主要的数据源是来自于类SysUserLicenseCountRepo ...

  6. .NET Framework 高级开发

    .NET Framework 高级开发 MSDN 这部分帮助介绍与 .NET Framework 相关的高级编程主题. 本节内容 管理 介绍如何管理 Active Directory 中的对象,如何使 ...

  7. 简化 Hadoop 2.4.1 Eclpse 插件编译【原创】

    昨天折腾hadoop2X的eclipse插件,从https://github.com/winghc/hadoop2x-eclipse-plugin把源码搞下来后,很快搞定出来一个,但是...New H ...

  8. 允许CEF跨域访问iframe

    默认情况下,如果嵌入本地Web页面,并在页面内部使用iframe来显示一个在线页面,加载的过程中会触发一个未捕获异常,虚函数CefV8ContextHandler::OnUncaughtExcepti ...

  9. Hadoop学习笔记(老版本,YARN之前),MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系

    一.基本概念 在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”.此外,Hadoop提供的分布式文件系统 ...

  10. Maven Android使用一

    Maven的坐标包括:groupId.artifactId.version.packaging.classifier. groupId:定义当前maven项目隶属的实际项目: artifactId:定 ...