110,546
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 创建Excel 并插入数据
/// </summary>
public bool CreateExcelFile(string sheetname, string filepath)
{
string sqlstr = "Select Name From SysColumns Where id=Object_Id('" + sheetname + "') ";
DataTable dt = QueryDS(sqlstr, ConnectionString).Tables[0];
int rowscount = dt.Rows.Count;
string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";";
OLEDBConnStr += " Extended Properties=Excel 8.0;";
if (!File.Exists(filepath))
{
string strCreateTableSQL = @" CREATE TABLE " + sheetname + "(";
for (int k = 0; k < rowscount; k++)
{
if (k == rowscount - 1)
{
strCreateTableSQL += @"" + dt.Rows[k][0].ToString() + " NText";
}
else
{
strCreateTableSQL += @"" + dt.Rows[k][0].ToString() + " NText,";
}
}
strCreateTableSQL += @" ) ";
OleDbConnection oConn = new OleDbConnection();
oConn.ConnectionString = OLEDBConnStr;
oConn.Open();
OleDbCommand oCreateComm = new OleDbCommand();
OleDbTransaction str = oConn.BeginTransaction();
oCreateComm.Connection = oConn;
oCreateComm.Transaction = str;
try
{
oCreateComm.CommandText = strCreateTableSQL;
oCreateComm.ExecuteNonQuery();
str.Commit();
oConn.Close();
DataTableToExcel(filepath, sheetname);
return true;
}
catch (Exception)
{
str.Rollback();
return false;
}
}
else
{
Response.Write("文件已经存在!");
return false;
}
}
/// <summary>
/// 两个DataTable的数据对拷
/// </summary>
/// <param name="srcTable">要导出的数据集合</param>
/// <param name="destTable">新的数据集</param>
private void CopyDataTable(DataTable srcTable, DataTable destTable)
{
foreach (DataRow row in srcTable.Rows)
{
destTable.Rows.Add(row.ItemArray);
}
}
/// <summary>
/// DataTable 导出到Excel
/// </summary>
/// <param name="Path">Excel 路径</param>
/// <param name="sheetName">Excel表名</param>
private void DataTableToExcel(string Path, string sheetName)
{
DataTable dtNew = new DataTable();
dtNew = ddst.Tables[0].Clone();
CopyDataTable(ddst.Tables[0], dtNew);
UpdateTable(sheetName, dtNew, Path);
}
/// <summary>
/// 执行修改表数据
/// </summary>
/// <param name="SheetName"></param>
/// <param name="ds">导出的数据</param>
/// <param name="path">Excel 路径</param>
/// <returns></returns>
public static int UpdateTable(string SheetName, DataTable dt, string path)
{
int num = 0;
string SQLString = "select * from [" + SheetName + "$]";
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + path + "';Extended Properties=Excel 8.0;";
using (OleDbConnection connection = new OleDbConnection(strCon))
{
using (OleDbCommand cmd = new OleDbCommand())
{
connection.Open();
using (OleDbTransaction str = connection.BeginTransaction())
{
try
{
cmd.Connection = connection;
cmd.CommandText = SQLString;
cmd.Transaction = str;
OleDbDataAdapter command = new OleDbDataAdapter(cmd);
OleDbCommandBuilder scb = new OleDbCommandBuilder(command);
scb.QuotePrefix = "[";
scb.QuoteSuffix = "]";
num = command.Update(dt);
str.Commit();
}
catch (OleDbException)
{
str.Rollback();
}
return num;
}
}
}
}