无法使用Microsoft.Jet.OLEDB.4.0创建excel文件

时间:2014-08-27 07:31:21

标签: c# asp.net excel oledb

我在几个来源中找到了如何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();
}

请解释我做错了什么。

1 个答案:

答案 0 :(得分:1)

在连接字符串中使用IMEX = 1会将Excel文件置于只读模式。

See ConnectionStrings.com

  

&#34; IMEX = 1;&#34;告诉司机总是读&#34;混合&#34; (数字,   日期,字符串等)数据列为文本。 请注意,此选项可能会   影响excel表写访问否定

要创建Excel文件,您需要IMEX = 0或IMEX = 2