1

我有一个网站(将 excel 转换为 xml)。当我在我的机器上运行时,一切正常。但是当我通过 IIS 运行我的网站时。它有问题:对象引用未设置为对象的实例。

下面是我的代码:

string filename = Server.MapPath("~/Uploads/" + Request.QueryString["Name"]);
    string[] sheet = _ReadExcel.getSheetNames(filename);
for (int i = 0; i < sheet.Length; i++)
        {

        }

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

请向我建议一些解决方案。谢谢

4

3 回答 3

0
 // Connect to Excel files
 System.Data.OleDb.OleDbConnection MyConnection ;
 System.Data.DataSet ds ;
 System.Data.OleDb.OleDbDataAdapter MyCommand ;
 MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\\18.xls';Extended Properties=Excel 8.0;");
 MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
 MyCommand.TableMappings.Add("Table", "Product");
 ds = new System.Data.DataSet();
 MyCommand.Fill(ds);
 MyConnection.Close();
 // Write to xml
 ds.WriteXml("Product.xml");

参考从 XML 生成 Excel 和从 Excel 生成 XML

于 2013-03-18T03:53:38.563 回答
0

您需要检查filename您的 excel 文件的路径是否正确。

如果该路径是正确的。您需要将 NETWORK SERVICE 帐户的权限授予您尝试读取或写入的文件夹。

不确定内部_ReadExcel.getSheetNames方法是什么,但它会将“null”值返回到您的“文件名”输入。您需要通过在 Visual Studio 中附加 IIS 进程来调试应用程序。然后你可以在 IIS 上运行时发现问题。

在 IIS 上调试的步骤:

  • 调试->附加到进程...
  • 从列表中选择 aspnet_wp.exe 进程。
  • 如果您正在运行的 IIS > 版本 5,则该进程将是 w3wp.exe,并且每个应用程序池都会有一个(因此,如果您不知道要访问哪个应用程序池,则需要附加到所有应用程序池)
于 2013-03-18T03:59:51.937 回答
0

在调用 sheet.length 之前,您需要将 sheet 设置为对象。

于 2013-03-18T03:17:35.813 回答