查看: 309|回复: 0

[.NET开发] C#实现的Excel文件操作类实例

发表于 2018-2-9 08:00:00

本文实例讲述了C#实现的Excel文件操作类。分享给大家供大家参考,具体如下:

  1. using System;
  2. using System.Data;
  3. using System.Data.OleDb;
  4. using System.Text;
  5. using System.IO;
  6. namespace Hxh.API
  7. {
  8. /// <summary>
  9. /// ExcelOpration 的摘要说明。
  10. /// </summary>
  11. public class ExcelOpration
  12. {
  13. OleDbConnection Conn;
  14. string connString ;
  15. string FileName;
  16. public ExcelOpration()
  17. {
  18. //
  19. // TODO: 在此处添加构造函数逻辑
  20. //
  21. }
  22. public ExcelOpration(string _FileName)
  23. {
  24. //
  25. // TODO: 在此处添加构造函数逻辑
  26. //
  27. FileName = _FileName;
  28. }
  29. /// <summary>
  30. /// 打开连接
  31. /// </summary>
  32. private void Open()
  33. {
  34. if(Conn==null)
  35. {
  36. //在此处设置访问的数据库文件
  37. connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName +";Extended Properties=Excel 8.0;";
  38. Conn=new OleDbConnection(connString);
  39. Conn.Open();
  40. }
  41. else if(Conn.State==System.Data.ConnectionState.Closed)
  42. Conn.Open();
  43. }
  44. /// <summary>
  45. /// 关闭连接
  46. /// </summary>
  47. public void Close()
  48. {
  49. if (Conn != null)
  50. Conn.Close();
  51. }
  52. /// <summary>
  53. /// 导入数据到Excel
  54. /// </summary>
  55. /// <param name="OutTable"></param>
  56. public void ImportData(DataTable OutTable)
  57. {
  58. CreateExcel(OutTable);
  59. InsertData(OutTable);
  60. }
  61. /// <summary>
  62. /// 创建Excel文件和表头
  63. /// </summary>
  64. private void CreateExcel(DataTable OutTable)
  65. {
  66. StringBuilder sb = new StringBuilder();
  67. if(File.Exists(FileName))
  68. {
  69. File.Delete(FileName);
  70. }
  71. sb.Append("create table Sheet1(");
  72. foreach(DataColumn col in OutTable.Columns)
  73. {
  74. sb.Append(col.ColumnName+" varchar,");
  75. }
  76. sb.Remove(sb.Length-1,1);
  77. sb.Append(")");
  78. Open();
  79. OleDbCommand OleCmd = new OleDbCommand();
  80. OleCmd.Connection = Conn;
  81. OleCmd.CommandText = sb.ToString();
  82. OleCmd.ExecuteNonQuery();
  83. Close();
  84. }
  85. /// <summary>
  86. /// 插入数据
  87. /// </summary>
  88. private void InsertData(DataTable OutTable)
  89. {
  90. OleDbCommand OleCmd = new OleDbCommand();
  91. OleDbParameter[] parm=new OleDbParameter[OutTable.Columns.Count];
  92. StringBuilder sb = new StringBuilder();
  93. sb.Append("insert into Sheet1 values(");
  94. for(int i=0;i<OutTable.Columns.Count;i++)
  95. {
  96. parm=new OleDbParameter("@P"+OutTable.Columns.ColumnName,OleDbType.VarChar);
  97. sb.Append("@P"+OutTable.Columns.ColumnName+",");
  98. OleCmd.Parameters.Add(parm);
  99. }
  100. sb.Remove(sb.Length-1,1);
  101. sb.Append(")");
  102. Open();
  103. OleCmd.Connection = Conn;
  104. OleCmd.CommandText = sb.ToString();
  105. foreach(DataRow row in OutTable.Rows)
  106. {
  107. for(int i=0;i<OutTable.Columns.Count;i++)
  108. {
  109. parm.Value = row[OutTable.Columns.ColumnName].ToString().Trim();
  110. }
  111. OleCmd.ExecuteNonQuery();
  112. }
  113. Close();
  114. }
  115. /// <summary>
  116. /// 从Excel输出数据到数据集
  117. /// </summary>
  118. /// <returns></returns>
  119. public DataSet OutPortData()
  120. {
  121. DataSet ds = new DataSet();
  122. Open();
  123. OleDbDataAdapter myAdapter = new OleDbDataAdapter("select * from [Sheet1$]", Conn);
  124. myAdapter.Fill(ds,"Input");
  125. Close();
  126. return ds;
  127. }
  128. }
  129. }
复制代码

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#操作Excel技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

您可能感兴趣的文章:

  • C#封装的常用文件操作类实例
  • C#常用目录文件操作类实例
  • C#使用iTextSharp封装的PDF文件操作类实例
  • C#配置文件操作类分享
  • C#文件操作类分享


回复

使用道具 举报