0
点赞
收藏
分享

微信扫一扫

使用OLEDB将数据库的数据导入Excel文件

/// <summary>

/// DataTable中的数据导入到Excel,使用OLEDB,

/// </summary>

/// <param name="dt">数据源Table</param>

/// <param name="excelPath">Excel文件的完整路径</param>

/// <param name="sheetName">Excel Sheet的名称</param>

/// <param name="result">导入执行的结果</param>

/// <returns></returns>

public bool DataTableToExcel(DataTable dt,string excelPath,string sheetName,out string result)

{

string ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source={0};Extended ProPerties=Excel 8.0";


if(dt == null)

{

result = "DataTable不能为空";

return false;

}


int rows = dt.Rows.Count; //行的数量

int cols = dt.Columns.Count; //列的数量


if(rows == 0)

{

result = "没有数据";

return false;

}


StringBuilder sb = new StringBuilder();

string connString = string.Format(ConnectionString,excelPath);


//生成创建表的脚本

sb.Append("CREATE TABLE " + sheetName + " ( ");



for(int i=0;i<cols;i++)

sb.Append(string.Format("[{0}] varchar,",dt.Columns[i].ColumnName));

sb.Remove(sb.Length -1,1); //移除最后一个“,”

sb.Append(")"); //最后添加一个“)”



using(OleDbConnection objConn = new OleDbConnection(connString))

{

OleDbCommand objCmd = new OleDbCommand(sb.ToString(),objConn);



try

{

objConn.Open();

objCmd.ExecuteNonQuery();

}

catch(Exception e)

{

result = "在Excel中创建表失败,错误信息:" + e.Message;

return false;

}

//生成插入数据脚本

#region 生成插入数据脚本

sb.Remove(0,sb.Length);

sb.Append("INSERT INTO " + sheetName + " ( ");



for(int i=0;i<cols;i++)

sb.Append("[" + dt.Columns[i].ColumnName + "],");

sb.Remove(sb.Length -1,1); //移除最后一个“,”

sb.Append(") values (");


for(int i=0;i<cols;i++)

sb.Append("@" + dt.Columns[i].ColumnName + ",");

sb.Remove(sb.Length -1,1); //移除最后一个

sb.Append(")");


#endregion


//建立插入动作的Command

objCmd.CommandText = sb.ToString();

OleDbParameterCollection param = objCmd.Parameters;


for(int i=0;i<cols;i++)

{

param.Add(new OleDbParameter("@" + dt.Columns[i].ColumnName, OleDbType.VarChar));

}


//遍历DataTable将数据插入新建的Excel文件中

foreach (DataRow row in dt.Rows)

{

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

{

param[i].Value = row[i];

}


objCmd.ExecuteNonQuery();

}


result = "数据已成功导入Excel";

return true;

}//end using

}

举报

相关推荐

0 条评论