1. //多个DataSet导出Excel文件
  2. public static void DataSetToExcel(DataSet p_ds,string strSavePath)
  3. {
  4. int l_intSheetIndex=;//多个DataSet导出多个Excel,针对Excel文件中的第一个Sheet
  5. //实例化Excel对象
  6. Microsoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
  7. //根据Excel对象新建Excel文件
  8. Microsoft.Office.Interop.Excel.Workbook book=app.Workbooks.Add(true);
  9. try
  10. {
  11. foreach(DataTable dt in p_ds.Tables)
  12. {
  13. if(dt!=null && dt.Rows.Count>)
  14. {
  15. object missing=System.Reflection.Missing.Value;
  16. Microsoft.Office.Interop.Excel.Worksheet sheet;
  17. //判断Excel文件是否存在Sheet
  18. //1.不存在就新建Sheet
  19. //2.存在就开启对应Sheet
  20. if(book.Worksheets.Count < l_intSheetIndex)
  21. {
  22. //新建Sheet
  23. sheet=(Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets.Add(Type.Missing,book.Worksheets[book.Worksheets.Count],,Type.Missing);
  24. }
  25. //开启对应Sheet
  26. sheet=(Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets.get_Item(l_intSheetIndex);
  27. //设置Sheet名
  28. sheet.Name=dt.TableName;
  29.  
  30. //取得区域 --取得区域的方式 1.设置整列 2.设置使用的区域
  31. //整列
  32. //Range column = ((Range)worksheet.Cells[1, 1]).EntireColumn;(选取A列;方法:先选取A1单元格,然后选取A1单元格所在的这一整列。)
  33. //使用的区域
  34. Microsoft.Office.Interop.Excel.Range l_range=sheet.Range[sheet.Cells[,],sheet.Cells[dt.Rows.Count+,dt.Columns.Count]];
  35. //设置区域格式“@”是文本格式
  36. l_range.NumberFormatLocal="@";
  37. int i=;
  38. foreach(DataColumn dc in dt.Columns)
  39. {
  40. sheet.Cells[,i+]=dc.ColumnName;
  41. i++;
  42. }
  43. int j=;
  44. foreach(DataRow dr in dt.Rows)
  45. {
  46. int k=;
  47. foreach(DataColumn dc in dt.Columns)
  48. {
  49. sheet.Cells[j+,k+]=dr[k].ToString();
  50. k++;
  51. }
  52. }
  53. book.Saveed=true;
  54. }
  55. l_intSheetIndex++;
  56. }
  57. ((Microsoft.Office.Interop.Excel.WorkSheet)book.Worksheets.get_Item()).Select();
  58. book.SaveAs(strSavePath);
  59. book.Close(Type.Missing,Type.Missing,Type.Missing);
  60. }
  61. catch(Exception ex)
  62. {
  63. throw ex;
  64. }
  65. finally
  66. {
  67. app.Quit();
  68. IntPtr t=new IntPtr(app.Hwnd);
  69. int d=;
  70. GetWindowThreadProcessId(t,out d);
  71. System.Diagenostics.Process p=System.Diagnostics.Process.GetProcessById(d);
  72. p.Kill();
  73. }
  74. }
  75.  
  76. [DllImport("User32.dll",CharSet=CharSet.Auto)]
  77. Public static extern int GetWindowThreadProcessId(IntPtr hwnd,out int ID);

C# DataSet导出Excel的更多相关文章

  1. NPOI DataSet导出excel

    /// <summary> /// DataSet导出到Excel的MemoryStream /// </summary> /// <param name="d ...

  2. DataSet导出Excel,比以往的方法导出的Excel外观更加好看

    原文发布时间为:2010-06-21 -- 来源于本人的百度文章 [由搬家工具导入] ======目前方法=========== #region 生成Excel/// <summary>/ ...

  3. 【C#-导出Excel】DataSet导出Excel

    1.添加引用 2.封装方法 using System; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPO ...

  4. xml方式将dataset导出excel

    using System;using System.Collections;using System.Collections.Generic;using System.Data;using Syste ...

  5. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续篇)

    上周六我发表的文章<分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility>受到了大家的热烈支持与推荐,再此表示感谢,该ExcelUtility ...

  6. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility

    1. ExcelUtility功能:  1.将数据导出到EXCEL(支持XLS,XLSX,支持多种类型模板,支持列宽自适应)  类名:ExcelUtility. Export  2.将EXCEL ...

  7. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  8. [转] Asp.Net 导出 Excel 数据的9种方案

    湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website ...

  9. NPOI导出Excel帮助类

    工具类 using System; using System.Collections.Generic; using System.Data; using System.IO; using System ...

随机推荐

  1. BI简介

    一.BI简介 BI全称是business intelligence,直译过来就是商业智能.BI表示的是一个体系,一套完整的解决方案.主要用于数据的整合.分析.挖掘等,为帮助企业决策而提供如报表.预测分 ...

  2. C++中细节知识点

    C++中常识小知识: 1.在C++的类中成员变量与成员函数默认为私有的,结构体中的成员变量与成员函数默认为公有的. 2.C++中this关键字是指针,指向当前对象. 3.在C++中一般类的成员变量与成 ...

  3. 20个实用javascript技巧及实践(二)

    21. 使用逻辑AND/OR来处理条件语句 var foo =10; foo ==10&& doSomething();// is the same thing as if (foo ...

  4. Vue.js基础2

    声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM: <div id="app"> {{ message }} </div ...

  5. ArcGIS DataStore手册——管理篇

    第二章:ArcGIS DataStore管理维护 1.备份管理 备份的目的在于发生原始数据损坏或其他突发情况时,可避免数据丢失,并可快速的使用备份数据来恢复,以保证服务仍可使用. 单机模式下,可使用D ...

  6. 【转载】javascript深入理解js闭包

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  7. metasploit 连接database相关问题

    我们首先去这个目录下看database.yml文件内容: 下图是我们看到的的信息 接着打开metasploit,运行db_connect 指令链接数据库.格式为: db_connect 用户名:密码@ ...

  8. 深入理解java的形参和实参

    转载声明:本文转载自公众号「码匠笔记」. 前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public    classMain{    publicsta ...

  9. SQL Server ->> SQL Server 2016功能改进之 -- Update Statistics

    1) 以前SQL Server更新一张表/索引的间隔是固定的,创建时更新一次,到了500行时更新第二次,接下来就是呈百分比式的间隔去更新,距离数据修改量达到表的行数量的的20%再次触发更新.但是这样的 ...

  10. Asp.net让某一页设置成gb2312或utf-8的方法

    有些需求,一定要用到utf-8格式,在web.config里面设置<globalization             requestEncoding="utf-8"     ...