在最近的项目中,需要将生产数据存入Excel中进行保存,于是参照ExcelHelper类(http://www.cnblogs.com/VAllen/articles/ExcelHelper_Peng.html),整理修改了一个Excel操作类,提供了两种连接字符串,支持offic2003格式和office2007及以上版本的xls、xlsx格式,请自行选择。转载请注明源地址。
实现的功能:
新建:
1.按照提供的模板新建空白Excel工作簿;
2.按照DataSet中的数据,新建包含Sheet和表头的新工作簿;
读取:
1.读取Excel工作簿中的数据,存入DataSet;
2.读取Excel第一个表格中的数据,存入DataTable;
写入:
1.向工作簿已有表格中追加数据(添加行和sheet);
注意:
使用时需要在工程中添加Microsoft.Office.Interop.Excel和Microsoft.Office.Core两项引用。
下面是代码部分:
</pre><pre name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Reflection;
namespace YourNamespace
{
/// <summary>
/// Excel 操作类,by southpolaris
/// </summary>
class ExcelOperate
{
private readonly string connectionString;
public OleDbConnection odc; //连接对象
private Microsoft.Office.Interop.Excel.Application excel;
private static bool firstRead = true; //第一次写入获取已有行数
private static long startIndex = 0;
/// <summary>
/// 初始化一个Excel操作实例
/// </summary>
/// <param name="pathString">请提供一个Excel文件路径,无论是已创建的或者是未创建的</param>
public ExcelHelper(string pathStr)
{
this.connectionString = "Provider = Microsoft.ACE.OLEDB.12.0 ; Data Source =" + pathStr + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1\""; //for Office2007-2013
this.connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + pathStr + ";Extended Properties=Excel 8.0;Persist Security Info=False"; //for Office1997-2003
this.odc = new OleDbConnection(connectionString);
excel = new Microsoft.Office.Interop.Excel.Application();//create Excel manipulate objects
}
/// <summary>
/// 读取Excel文档所有数据
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>Excel文档所有数据</returns>
public DataSet ReadExcel(string sql)
{
DataSet ds = new DataSet();
odc.Open();
OleDbDataAdapter oda = new OleDb