数据导出的方法如下:

一、下载office的类库:microsoft.office.interop.excel.zip

根据电脑安装的office版本选择引入相应的类库,office2007选择12.0的版本,office2010选择14的版本

二、设置该类库的嵌入互操作类型属性为false,如图

三、调用该方法实现数据的导出

主要代码如下:

  1. public static bool ExportExcel(System.Data.DataTable dt, string path)
  2. {
  3. bool succeed = false;
  4. if (dt != null)
  5. {
  6. Microsoft.Office.Interop.Excel.Application xlApp = null;
  7. try
  8. {
  9. xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
  10. }
  11. catch (Exception ex)
  12. {
  13. throw ex;
  14. }
  15.  
  16. if (xlApp != null)
  17. {
  18. try
  19. {
  20. Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
  21. object oMissing = System.Reflection.Missing.Value;
  22. Microsoft.Office.Interop.Excel.Worksheet xlSheet = null;
  23.  
  24. xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[];
  25. xlSheet.Name = dt.TableName;
  26.  
  27. int rowIndex = ;
  28. int colIndex = ;
  29. int colCount = dt.Columns.Count;
  30. int rowCount = dt.Rows.Count;
  31.  
  32. //列名的处理
  33. for (int i = ; i < colCount; i++)
  34. {
  35. xlSheet.Cells[rowIndex, colIndex] = dt.Columns[i].ColumnName;
  36. colIndex++;
  37. }
  38. //列名加粗显示
  39.  
  40. //同时可以设置样式等
  41. xlSheet.get_Range(xlSheet.Cells[rowIndex, ], xlSheet.Cells[rowIndex, colCount]).Font.Bold = true;
  42. xlSheet.get_Range(xlSheet.Cells[rowIndex, ], xlSheet.Cells[rowCount + , colCount]).Font.Name = "Arial";
  43. xlSheet.get_Range(xlSheet.Cells[rowIndex, ], xlSheet.Cells[rowCount + , colCount]).Font.Size = "";
  44. rowIndex++;
  45.  
  46. //数据内容逐行写入,当数据量大的时候建议采用异步回调方法;
  47.  
  48. for (int i = ; i < rowCount; i++)
  49. {
  50. colIndex = ;
  51. for (int j = ; j < colCount; j++)
  52. {
  53. xlSheet.Cells[rowIndex, colIndex] = dt.Rows[i][j].ToString();
  54. colIndex++;
  55. }
  56. rowIndex++;
  57. }
  58. xlSheet.Cells.EntireColumn.AutoFit();
  59.  
  60. xlApp.DisplayAlerts = false;
  61. path = System.IO.Path.GetFullPath(path);
  62. xlBook.SaveCopyAs(path);
  63. xlBook.Close(false, null, null);
  64. xlApp.Workbooks.Close();
  65. Marshal.ReleaseComObject(xlSheet);
  66. Marshal.ReleaseComObject(xlBook);
  67. xlBook = null;
  68. succeed = true;
  69. }
  70. catch (Exception ex)
  71. {
  72. succeed = false;
  73. }
  74. finally
  75. {
  76. xlApp.Quit();
  77. Marshal.ReleaseComObject(xlApp);
  78. int generation = System.GC.GetGeneration(xlApp);
  79. xlApp = null;
  80. System.GC.Collect(generation);
  81. }
  82. }
  83. }
  84. return succeed;
  85. }

office链接类库:http://files.cnblogs.com/files/weiweiboqi/microsoft.office.interop.excel.zip

后台数据导出为Excel的更多相关文章

  1. 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>

    前台datagrid数据绑定 #region 导出到excel中    /// <summary>    /// 2014-6-6    /// </summary>    / ...

  2. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  3. 将C1Chart数据导出到Excel

    大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...

  4. vb.net-三种将datagridview数据导出为excel文件的函数

    第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll  office.dll #Region "导出excel函数 ...

  5. 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  6. 数据导出到Excel中

    自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将             System.Web.HttpContext.Current.Response.Charset =   ...

  7. asp.net将数据导出到excel

    本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...

  8. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  9. Qt中将QTableView中的数据导出为Excel文件

    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...

随机推荐

  1. poj 2046 Gap(bfs+hash)

    Description Let's play a card game called Gap. You have cards labeled with two-digit numbers. The fi ...

  2. Oracle insert update 时间处理

    24小时表示方法:to_date(’ ::’,’yyyy-mm-dd hh24:mi:ss’) 12小时表示方法:to_date(’ ::’,’yyyy-mm-dd hh:mi:ss’) ','S75 ...

  3. Beyond Compare 忽略两个文件内容的顺序比较文件内容(xjl456852原创)

    有时两个文件内容的顺序是不固定的,对比时需要忽略文件顺序进行对比. 可以这样设置: 点击菜单下面工具栏按钮: 点击Format旁的三角,选择Sorted,就会按文件的顺序排序比较.忽略了文件内容顺序的 ...

  4. C# 约瑟夫环算法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. Eclipse UML插件AmaterasUML的配置及使用

    AmaterasUML是个人觉得最好用的Eclipse UML插件,可以通过拖拽Java源文件,轻松生成类图结构,同时支持活动图.时序图和用例图.它的官方下载地址是:http://sourceforg ...

  6. C#调用VB6写的ActiveX Dll

    搜索了很多资料,下载了Demo:http://download.csdn.net/detail/xieguoxian/2747484然后在同学电脑上测试才弄好...记录下 (一) 前期搜索资料: VB ...

  7. CodeSmith使用总结--读取一个表试试

    我感觉CodeSmith对于我的最大用途是不用我手动创建每个表的Model.BLL和DAL了,那些繁琐的工作真的让我很无语. CodeSmith要读取数据库中的表就要先连接数据库. 新建一个数据库连接 ...

  8. Docker中的一些命令

    可以交互的方式启动container $ sudo docker run -t -i ubuntu:14.04 /bin/bash 当这个Bash shell进程终止时,这个容器也停止了. docke ...

  9. AndroidAnnotations框架配置

    如今Android Studio的普及,Android开发基本要舍弃Eclipse了,最近使用AndroidAnnotations 注解框架的时候,找了些资料慢慢整出来了,在这给大家简单分享一下: 首 ...

  10. MessageDigest 类

    MessageDigest 类    MessageDigest 类是一个引擎类,它是为了提供诸如 SHA1 或 MD5 等密码上安全的报文摘要功能而设计的.密码上安全的报文摘要可接受任意大小的输入( ...