1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using System.Windows.Forms;
  6. using System.Reflection;
  7.  
  8. namespace DMS
  9. {
  10. /// <summary>
  11. /// C#操作Excel类
  12. /// </summary>
  13. class ExcelOperate
  14. {
  15. //法一
  16. //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
  17. //{
  18. // DataTable dataTable = dataSet.Tables[0];
  19. // int rowNumber = dataTable.Rows.Count;
  20. // int columnNumber = dataTable.Columns.Count;
  21.  
  22. // if (rowNumber == 0)
  23. // {
  24. // MessageBox.Show("没有任何数据可以导入到Excel文件!");
  25. // return false;
  26. // }
  27.  
  28. // //建立Excel对象
  29. // Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  30. // excel.Application.Workbooks.Add(true);
  31. // excel.Visible = isShowExcle;//是否打开该Excel文件
  32.  
  33. // //填充数据
  34. // for (int c = 0; c < rowNumber; c++)
  35. // {
  36. // for (int j = 0; j < columnNumber; j++)
  37. // {
  38. // excel.Cells[c + 1, j + 1] = dataTable.Rows[c].ItemArray[j];
  39. // }
  40. // }
  41.  
  42. // return true;
  43. //}
  44.  
  45. //法二
  46. //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
  47. //{
  48. // DataTable dataTable = dataSet.Tables[0];
  49. // int rowNumber = dataTable.Rows.Count;
  50.  
  51. // int rowIndex = 1;
  52. // int colIndex = 0;
  53.  
  54. // if (rowNumber == 0)
  55. // {
  56. // return false;
  57. // }
  58.  
  59. // //建立Excel对象
  60. // Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  61. // excel.Application.Workbooks.Add(true);
  62. // excel.Visible = isShowExcle;
  63.  
  64. // //生成字段名称
  65. // foreach (DataColumn col in dataTable.Columns)
  66. // {
  67. // colIndex++;
  68. // excel.Cells[1, colIndex] = col.ColumnName;
  69. // }
  70.  
  71. // //填充数据
  72. // foreach (DataRow row in dataTable.Rows)
  73. // {
  74. // rowIndex++;
  75. // colIndex = 0;
  76. // foreach (DataColumn col in dataTable.Columns)
  77. // {
  78. // colIndex++;
  79. // excel.Cells[rowIndex, colIndex] = row[col.ColumnName];
  80. // }
  81. // }
  82.  
  83. // return true;
  84. //}
  85.  
  86. //法三(速度最快)
  87. /// <summary>
  88. /// 将数据集中的数据导出到EXCEL文件
  89. /// </summary>
  90. /// <param name="dataSet">输入数据集</param>
  91. /// <param name="isShowExcle">是否显示该EXCEL文件</param>
  92. /// <returns></returns>
  93. public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
  94. {
  95. DataTable dataTable = dataSet.Tables[];
  96. int rowNumber = dataTable.Rows.Count;//不包括字段名
  97. int columnNumber = dataTable.Columns.Count;
  98. int colIndex = ;
  99.  
  100. if (rowNumber == )
  101. {
  102. return false;
  103. }
  104.  
  105. //建立Excel对象
  106. Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  107. //excel.Application.Workbooks.Add(true);
  108. Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
  109. Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[];
  110. excel.Visible = isShowExcle;
  111. //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
  112. Microsoft.Office.Interop.Excel.Range range;
  113.  
  114. //生成字段名称
  115. foreach (DataColumn col in dataTable.Columns)
  116. {
  117. colIndex++;
  118. excel.Cells[, colIndex] = col.ColumnName;
  119. }
  120.  
  121. object[,] objData = new object[rowNumber, columnNumber];
  122.  
  123. for (int r = ; r < rowNumber; r++)
  124. {
  125. for (int c = ; c < columnNumber; c++)
  126. {
  127. objData[r, c] = dataTable.Rows[r][c];
  128. }
  129. //Application.DoEvents();
  130. }
  131.  
  132. // 写入Excel
  133. range = worksheet.get_Range(excel.Cells[, ], excel.Cells[rowNumber + , columnNumber]);
  134. //range.NumberFormat = "@";//设置单元格为文本格式
  135. range.Value2 = objData;
  136. worksheet.get_Range(excel.Cells[, ], excel.Cells[rowNumber + , ]).NumberFormat = "yyyy-m-d h:mm";
  137.  
  138. return true;
  139. }
  140.  
  141. //法四
  142. //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
  143. //{
  144. // DataTable dataTable = dataSet.Tables[0];
  145. // int rowNumber = dataTable.Rows.Count;
  146. // int columnNumber = dataTable.Columns.Count;
  147. // String stringBuffer = "";
  148.  
  149. // if (rowNumber == 0)
  150. // {
  151. // MessageBox.Show("没有任何数据可以导入到Excel文件!");
  152. // return false;
  153. // }
  154.  
  155. // //建立Excel对象
  156. // Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  157. // excel.Application.Workbooks.Add(true);
  158. // excel.Visible = isShowExcle;//是否打开该Excel文件
  159.  
  160. // //填充数据
  161. // for (int i = 0; i < rowNumber; i++)
  162. // {
  163. // for (int j = 0; j < columnNumber; j++)
  164. // {
  165. // stringBuffer += dataTable.Rows[i].ItemArray[j].ToString();
  166. // if (j < columnNumber - 1)
  167. // {
  168. // stringBuffer += "\t";
  169. // }
  170. // }
  171. // stringBuffer += "\n";
  172. // }
  173. // Clipboard.Clear();
  174. // Clipboard.SetDataObject(stringBuffer);
  175. // ((Microsoft.Office.Interop.Excel.Range)excel.Cells[1, 1]).Select();
  176. // ((Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveWorkbook.ActiveSheet).Paste(Missing.Value, Missing.Value);
  177. // Clipboard.Clear();
  178.  
  179. // return true;
  180. //}
  181.  
  182. //public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
  183. //{
  184. // DataTable dataTable = dataSet.Tables[0];
  185. // int rowNumber = dataTable.Rows.Count;
  186. // int columnNumber = dataTable.Columns.Count;
  187.  
  188. // if (rowNumber == 0)
  189. // {
  190. // MessageBox.Show("没有任何数据可以导入到Excel文件!");
  191. // return false;
  192. // }
  193.  
  194. // //建立Excel对象
  195. // Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  196. // Microsoft.Office.Interop.Excel.Workbook workBook = excel.Application.Workbooks.Add(true);
  197. // excel.Visible = false;//是否打开该Excel文件
  198.  
  199. // //填充数据
  200. // for (int i = 0; i < rowNumber; i++)
  201. // {
  202. // for (int j = 0; j < columnNumber; j++)
  203. // {
  204. // excel.Cells[i + 1, j + 1] = dataTable.Rows[i].ItemArray[j];
  205. // }
  206. // }
  207.  
  208. // //string fileName = path + "\\" + DateTime.Now.ToString().Replace(':', '_') + ".xls";
  209. // workBook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  210.  
  211. // try
  212. // {
  213. // workBook.Saved = true;
  214. // excel.UserControl = false;
  215. // //excelapp.Quit();
  216. // }
  217. // catch (Exception exception)
  218. // {
  219. // MessageBox.Show(exception.Message);
  220. // }
  221. // finally
  222. // {
  223. // workBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
  224. // excel.Quit();
  225. // }
  226.  
  227. // if (isShowExcle)
  228. // {
  229. // System.Diagnostics.Process.Start(fileName);
  230. // }
  231. // return true;
  232. //}
  233.  
  234. //public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
  235. //{
  236. // DataTable dataTable = dataSet.Tables[0];
  237. // int rowNumber = dataTable.Rows.Count;//不包括字段名
  238. // int columnNumber = dataTable.Columns.Count;
  239. // int colIndex = 0;
  240.  
  241. // if (rowNumber == 0)
  242. // {
  243. // MessageBox.Show("没有任何数据可以导入到Excel文件!");
  244. // return false;
  245. // }
  246.  
  247. // //建立Excel对象
  248. // Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  249. // //excel.Application.Workbooks.Add(true);
  250. // Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
  251. // Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
  252. // excel.Visible = isShowExcle;
  253. // //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
  254. // worksheet.Name = "挠度数据";
  255. // Microsoft.Office.Interop.Excel.Range range;
  256.  
  257. // //生成字段名称
  258. // foreach (DataColumn col in dataTable.Columns)
  259. // {
  260. // colIndex++;
  261. // excel.Cells[1, colIndex] = col.ColumnName;
  262. // }
  263.  
  264. // object[,] objData = new object[rowNumber, columnNumber];
  265.  
  266. // for (int r = 0; r < rowNumber; r++)
  267. // {
  268. // for (int c = 0; c < columnNumber; c++)
  269. // {
  270. // objData[r, c] = dataTable.Rows[r][c];
  271. // }
  272. // //Application.DoEvents();
  273. // }
  274.  
  275. // // 写入Excel
  276. // range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
  277. // //range.NumberFormat = "@";//设置单元格为文本格式
  278. // range.Value2 = objData;
  279. // worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";
  280.  
  281. // //string fileName = path + "\\" + DateTime.Now.ToString().Replace(':', '_') + ".xls";
  282. // workbook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  283.  
  284. // try
  285. // {
  286. // workbook.Saved = true;
  287. // excel.UserControl = false;
  288. // //excelapp.Quit();
  289. // }
  290. // catch (Exception exception)
  291. // {
  292. // MessageBox.Show(exception.Message);
  293. // }
  294. // finally
  295. // {
  296. // workbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
  297. // excel.Quit();
  298. // }
  299.  
  300. // //if (isShowExcle)
  301. // //{
  302. // // System.Diagnostics.Process.Start(fileName);
  303. // //}
  304. // return true;
  305. //}
  306.  
  307. /// <summary>
  308. /// 将数据集中的数据保存到EXCEL文件
  309. /// </summary>
  310. /// <param name="dataSet">输入数据集</param>
  311. /// <param name="fileName">保存EXCEL文件的绝对路径名</param>
  312. /// <param name="isShowExcle">是否打开EXCEL文件</param>
  313. /// <returns></returns>
  314. public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
  315. {
  316. DataTable dataTable = dataSet.Tables[];
  317. int rowNumber = dataTable.Rows.Count;//不包括字段名
  318. int columnNumber = dataTable.Columns.Count;
  319. int colIndex = ;
  320.  
  321. if (rowNumber == )
  322. {
  323. MessageBox.Show("没有任何数据可以导入到Excel文件!");
  324. return false;
  325. }
  326.  
  327. //建立Excel对象
  328. Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
  329. //excel.Application.Workbooks.Add(true);
  330. Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
  331. Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[];
  332. excel.Visible = false;
  333. //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
  334. Microsoft.Office.Interop.Excel.Range range;
  335.  
  336. //生成字段名称
  337. foreach (DataColumn col in dataTable.Columns)
  338. {
  339. colIndex++;
  340. excel.Cells[, colIndex] = col.ColumnName;
  341. }
  342.  
  343. object[,] objData = new object[rowNumber, columnNumber];
  344.  
  345. for (int r = ; r < rowNumber; r++)
  346. {
  347. for (int c = ; c < columnNumber; c++)
  348. {
  349. objData[r, c] = dataTable.Rows[r][c];
  350. }
  351. //Application.DoEvents();
  352. }
  353.  
  354. // 写入Excel
  355. range = worksheet.get_Range(excel.Cells[, ], excel.Cells[rowNumber + , columnNumber]);
  356. //range.NumberFormat = "@";//设置单元格为文本格式
  357. range.Value2 = objData;
  358. worksheet.get_Range(excel.Cells[, ], excel.Cells[rowNumber + , ]).NumberFormat = "yyyy-m-d h:mm";
  359.  
  360. //string fileName = path + "\\" + DateTime.Now.ToString().Replace(':', '_') + ".xls";
  361. workbook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  362.  
  363. try
  364. {
  365. workbook.Saved = true;
  366. excel.UserControl = false;
  367. //excelapp.Quit();
  368. }
  369. catch (Exception exception)
  370. {
  371. MessageBox.Show(exception.Message);
  372. }
  373. finally
  374. {
  375. workbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
  376. excel.Quit();
  377. }
  378.  
  379. if (isShowExcle)
  380. {
  381. System.Diagnostics.Process.Start(fileName);
  382. }
  383. return true;
  384. }
  385. }
  386. }

C# 导出Excel的示例(转)的更多相关文章

  1. Java利用POI实现导入导出Excel表格示例代码

    转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...

  2. C# 导出Excel的示例

    Excel知识点.  一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它的默认路径是C:\Program Files\Microsoft Visual S ...

  3. Jquery easyui datagrid 导出Excel

    From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...

  4. easyui 导出 excel

    <div style="margin-bottom:5px" id="tb"> <a href="#" class=&qu ...

  5. 如何使用JavaScript实现前端导入和导出excel文件

    一.SpreadJS 简介 SpreadJS 是一款基于 HTML5 的纯 JavaScript 电子表格和网格功能控件,以“高速低耗.纯前端.零依赖”为产品特色,可嵌入任何操作系统,同时满足 .NE ...

  6. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  7. NPOI导出Excel示例

    摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...

  8. SpringBoot使用Easypoi导出excel示例

    SpringBoot使用Easypoi导出excel示例 https://blog.csdn.net/justry_deng/article/details/84842111

  9. asp.net导出excel示例代码

    asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary> );             ;       ...

随机推荐

  1. Redis-主从配置了解

    集群的作用: 主从备份, 防止主机宕机(相当于从服务器为主服务器担任备份的作用) 读写分离, 分担master的任务 任务分离, 如从服务器分别分担备份工作和计算工作 redis集群方式 星形: 众多 ...

  2. Restful接口调用方法超详细总结

    由于在实际项目中碰到的restful服务,参数都以json为准.这里我获取的接口和传入的参数都是json字符串类型.发布restful服务可参照文章http://www.cnblogs.com/jav ...

  3. 常用类:String,StringBuffer,StringBuilder

    String String类被final修饰符修饰,所以不能将其进行继承,所有对它的改变都要重新创建一个新的地址 1.String的构造器 String() String(byte []bytes)/ ...

  4. Jenkins: 配置信息变更历史

    像 Jenkins 这样的系统,使用的过程就是配置文件变更的过程.如果能够对配置文件的变更进行跟踪管理,将极大的提高系统的可用性.Job Configuration History 插件就是这么一款实 ...

  5. springMVC修改用户请求内容

    最近在做一个微信相关的网站,很多地方涉及到微信表情的输入,导致内容无法插入到数据库,虽然有用到一个表情过滤的工具类,但是需要过滤的地方比较多,于是想到在过滤器中过滤用户请求的内容. request这个 ...

  6. [学习笔记] 多项式与快速傅里叶变换(FFT)基础

    引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...

  7. 在App Store中无法更新xcode 8.3.2时 以及更新新系统10.12

    今天更新Xcode 遇到三个坑坑1 要想更新Xcode最新版本 需要先把电脑系统更新到10.12 坑2 电脑系统更新到10.12 需要更新Mac Sierra 就可以了坑3 在App Store中下载 ...

  8. C++ 开发OCX 的方法和注意事项

    C++ 开发OCX 的方法和注意事项 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件.ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精 ...

  9. MySQL里创建外键时错误的解决

    --MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add const ...

  10. Get host name and port(Object-c)

    /************************************************************************** @param pChHostName: [out ...