手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net中操作Excel助手相关代码
asp.net中操作Excel助手相关代码
摘要:复制代码代码如下:publicpartialclassExcelHelper:IDisposable{#regionFiledsprivat...

复制代码 代码如下:

public partial class ExcelHelper : IDisposable

{

#region Fileds

private string _excelObject = "Provider=Microsoft.{0}.OLEDB.{1};Data Source={2};Extended Properties="Excel {3};HDR={4};IMEX={5}"";

private string _filepath = string.Empty;

private string _hdr = "No";

private string _imex = "1";

private OleDbConnection _con = null;

#endregion

#region Ctor

public ExcelHelper(string filePath)

{

this._filepath = filePath;

}

#endregion

#region Properties

/// <summary>

/// 获取连接字符串

/// </summary>

public string ConnectionString

{

get

{

string result = string.Empty;

if (String.IsNullOrEmpty(this._filepath))

return result;

//检查文件格式

FileInfo fi = new FileInfo(this._filepath);

if (fi.Extension.Equals(".xls"))

{

result = string.Format(this._excelObject, "Jet", "4.0", this._filepath, "8.0", this._hdr, this._imex);

}

else if (fi.Extension.Equals(".xlsx"))

{

result = string.Format(this._excelObject, "Ace", "12.0", this._filepath, "12.0", this._hdr, this._imex);

}

return result;

}

}

/// <summary>

/// 获取连接

/// </summary>

public OleDbConnection Connection

{

get

{

if (_con == null)

{

this._con = new OleDbConnection();

this._con.ConnectionString = this.ConnectionString;

}

return this._con;

}

}

/// <summary>

/// HDR

/// </summary>

public string Hdr

{

get { return this._hdr; }

set { this._hdr = value; }

}

/// <summary>

/// IMEX

/// </summary>

public string Imex

{

get { return this._imex; }

set { this._imex = value; }

}

#endregion

#region Methods

/// <summary>

/// Gets a schema

/// </summary>

/// <returns>Schema</returns>

public DataTable GetSchema()

{

DataTable dtSchema = null;

if (this.Connection.State != ConnectionState.Open) this.Connection.Open();

dtSchema = this.Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

return dtSchema;

}

private string GetTableName()

{

string tableName = string.Empty;

DataTable dt = GetSchema();

for (int i = 0; i < dt.Rows.Count; i++)

{

tableName += dt.Rows[i][2].ToString().Trim();

}

return tableName.Substring(0, tableName.Length - 1);

}

public DataTable ReadTable()

{

return this.ReadTable(GetTableName(), ExcelHelperReadTableMode.ReadFromWorkSheet);

}

/// <summary>

/// Read all table rows

/// </summary>

/// <param name="tableName">Table Name</param>

/// <returns>Table</returns>

public DataTable ReadTable(string tableName)

{

return this.ReadTable(tableName, ExcelHelperReadTableMode.ReadFromWorkSheet);

}

/// <summary>

/// Read table

/// </summary>

/// <param name="tableName">Table Name</param>

/// <param name="mode">Read mode</param>

/// <returns>Table</returns>

public DataTable ReadTable(string tableName, ExcelHelperReadTableMode mode)

{

return this.ReadTable(tableName, mode, "");

}

/// <summary>

/// Read table

/// </summary>

/// <param name="tableName">Table Name</param>

/// <param name="mode">Read mode</param>

/// <param name="criteria">Criteria</param>

/// <returns>Table</returns>

public DataTable ReadTable(string tableName, ExcelHelperReadTableMode mode, string criteria)

{

if (this.Connection.State != ConnectionState.Open)

{

this.Connection.Open();

}

string cmdText = "Select * From [{0}]";

if (!string.IsNullOrEmpty(criteria))

{

cmdText += " Where " + criteria;

}

string tableNameSuffix = string.Empty;

if (mode == ExcelHelperReadTableMode.ReadFromWorkSheet)

tableNameSuffix = "$";

OleDbCommand cmd = new OleDbCommand(string.Format(cmdText, tableName + tableNameSuffix));

cmd.Connection = this.Connection;

OleDbDataAdapter adpt = new OleDbDataAdapter(cmd);

DataSet ds = new DataSet();

adpt.Fill(ds, tableName);

if (ds.Tables.Count >= 1)

{

return ds.Tables[0];

}

else

{

return null;

}

}

/// <summary>

/// Drop table

/// </summary>

/// <param name="tableName">Table Name</param>

public void DropTable(string tableName)

{

if (this.Connection.State != ConnectionState.Open)

{

this.Connection.Open();

}

string cmdText = "Drop Table [{0}]";

using (OleDbCommand cmd = new OleDbCommand(string.Format(cmdText, tableName), this.Connection))

{

cmd.ExecuteNonQuery();

}

this.Connection.Close();

}

/// <summary>

/// Write table

/// </summary>

/// <param name="tableName">Table Name</param>

/// <param name="tableDefinition">Table Definition</param>

public void WriteTable(string tableName, Dictionary<string, string> tableDefinition)

{

using (OleDbCommand cmd = new OleDbCommand(this.GenerateCreateTable(tableName, tableDefinition), this.Connection))

{

if (this.Connection.State != ConnectionState.Open) this.Connection.Open();

cmd.ExecuteNonQuery();

}

}

/// <summary>

/// Add new row

/// </summary>

/// <param name="dr">Data Row</param>

public void AddNewRow(DataRow dr)

{

string command = this.GenerateInsertStatement(dr);

ExecuteCommand(command);

}

/// <summary>

/// Execute new command

/// </summary>

/// <param name="command">Command</param>

public void ExecuteCommand(string command)

{

using (OleDbCommand cmd = new OleDbCommand(command, this.Connection))

{

if (this.Connection.State != ConnectionState.Open) this.Connection.Open();

cmd.ExecuteNonQuery();

}

}

/// <summary>

/// Generates create table script

/// </summary>

/// <param name="tableName">Table Name</param>

/// <param name="tableDefinition">Table Definition</param>

/// <returns>Create table script</returns>

private string GenerateCreateTable(string tableName, Dictionary<string, string> tableDefinition)

{

StringBuilder sb = new StringBuilder();

bool firstcol = true;

sb.AppendFormat("CREATE TABLE [{0}](", tableName);

firstcol = true;

foreach (KeyValuePair<string, string> keyvalue in tableDefinition)

{

if (!firstcol)

{

sb.Append(",");

}

firstcol = false;

sb.AppendFormat("{0} {1}", keyvalue.Key, keyvalue.Value);

}

sb.Append(")");

return sb.ToString();

}

/// <summary>

/// Generates insert statement script

/// </summary>

/// <param name="dr">Data row</param>

/// <returns>Insert statement script</returns>

private string GenerateInsertStatement(DataRow dr)

{

StringBuilder sb = new StringBuilder();

bool firstcol = true;

sb.AppendFormat("INSERT INTO [{0}](", dr.Table.TableName);

foreach (DataColumn dc in dr.Table.Columns)

{

if (!firstcol)

{

sb.Append(",");

}

firstcol = false;

sb.Append(dc.Caption);

}

sb.Append(") VALUES(");

firstcol = true;

for (int i = 0; i <= dr.Table.Columns.Count - 1; i++)

{

if (!object.ReferenceEquals(dr.Table.Columns[i].DataType, typeof(int)))

{

sb.Append("'");

sb.Append(dr[i].ToString().Replace("'", "''"));

sb.Append("'");

}

else

{

sb.Append(dr[i].ToString().Replace("'", "''"));

}

if (i != dr.Table.Columns.Count - 1)

{

sb.Append(",");

}

}

sb.Append(")");

return sb.ToString();

}

/// <summary>

/// Dispose [实现IDispose接口]

/// </summary>

public void Dispose()

{

if (this._con != null && this._con.State == ConnectionState.Open)

this._con.Close();

if (this._con != null)

this._con.Dispose();

this._con = null;

this._filepath = string.Empty;

}

#endregion

}

【asp.net中操作Excel助手相关代码】相关文章:

asp.net Repeater中使用if的代码

asp.net操作xml增删改示例分享

asp.net下中文验证码,免费开源代码

asp.net下常用的加密算法MD5、SHA-1应用代码

介绍asp.net 操作INI文件的读写

asp.net下经典数据库记录分页代码

asp.net web大文件上传带进度条实例代码

asp.net Linq把数据导出到Excel的代码

asp.net下实现URL重写技术的代码

asp.net 结合mysql存储过程进行分页代码

精品推荐
分类导航