我在几个来源中找到了如何ctreate excel文件,例如
但是当我尝试使用建议的代码时,我在OleDbConnection的命令Open()上遇到错误。
System.Data.OleDb.OleDbException:Microsoft Jet数据库引擎找不到对象' D:\ Import2013 \ Imported \ 254 \ template.xls'。 确保对象存在,并拼写其名称和路径 名字正确。
这是我用过的代码。
string subFolder = Session["LoginID"] != null ? Server.MapPath( "Imported" ) + "\\" + Convert.ToString( Session["LoginID"] ) : "";
if (string.IsNullOrWhiteSpace( subFolder ))
{
Response.Redirect( "Default.aspx" );
Response.End();
}
StringBuilder commandText = new StringBuilder( "CREATE TABLE [Imported] (" );
if (!Directory.Exists( subFolder ))
Directory.CreateDirectory( subFolder );
string fileName = subFolder + "\\template.xls";
if (File.Exists( fileName ))
File.Delete( fileName );
var connectionString = string.Format( "Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=\"Excel 8.0;HDR=YES;Mode=Write;IMEX=1\"", fileName );
using (var connection = new OleDbConnection( connectionString ))
{
for (int i = 0; i < lvFieldNames.Count; i++)
{
commandText.Append( "[" + lvFieldNames[i].FieldName + "] varchar(64)" );
if (i < lvFieldNames.Count - 1)
commandText.Append( ", " );
}
commandText.Append( ");" );
using (var cmd = new OleDbCommand( commandText.ToString(), connection ))
{
if (connection.State != System.Data.ConnectionState.Open)
connection.Open(); //I have got an error on this line
cmd.ExecuteNonQuery();
}
connection.Close();
}
请解释我做错了什么。
答案 0 :(得分:1)
在连接字符串中使用IMEX = 1会将Excel文件置于只读模式。
&#34; IMEX = 1;&#34;告诉司机总是读&#34;混合&#34; (数字, 日期,字符串等)数据列为文本。 请注意,此选项可能会 影响excel表写访问否定。
要创建Excel文件,您需要IMEX = 0或IMEX = 2