public void writeExcel()
{
try
{
string strCmd = string.Empty;
OleDbCommand cmd;
OleDbConnection conn;
//string strConn = "Provider=Microsoft.Jet.Oledb.4.0;
Data Source=" + Dir + "\\"+fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
//HDR=YES 表示将sheet的第一行作为列名,所以我们默认excel的首行是列名。
//IMEX=1 表示大致的意思是使用导入的模式,把数字也作为字符串来操作
//有一点很重要。IMEX=1,是一种导入的模式,所以首先这个文件要存在,如果不存在会报错:
// “Microsoft Jet 数据库引擎找不到对象'…\Customer.xls'。请确定对象是否存在,并正
//确地写出它的名称和路径”,而且这样写了以后就算文件是存在的,还有一个问题是不能对文
//件更新的,会提示“不能修改表 'sheet1' 的设计。它在只读数据库中”等错误,甚至还有提
//示权限的问题。
conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source=" + @"D:\test.xls"+";Extended Properties= 'Excel 8.0;HDR=Yes;'" );
cmd = new OleDbCommand();
cmd.Connection = conn;
ds =this.voteDataSet;//取得要导出的表
conn.Open();
strCmd = "CREATE TABLE [Sheet1]( ";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += "[" + dc.ColumnName + "] nvarchar(20), ";
}
strCmd = strCmd.Trim().Substring(0, strCmd.Length - 2);
strCmd += ") ";
cmd.CommandText = strCmd;
cmd.ExecuteNonQuery();
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr.RowState != System.Data.DataRowState.Deleted)
{
strCmd = "insert into [Sheet1$] values( ";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += " ' " + dr[dc.ColumnName].ToString() + " ', ";
}
strCmd = strCmd.Substring(0, strCmd.Length - 2);
strCmd += ") ";
cmd.CommandText = strCmd;
cmd.ExecuteNonQuery();
}
}
conn.Close();
}
catch (Exception ex)
{
throw ex;
}
}