2013-03-18 164 views
0

我有一個網站(將excel轉換爲xml)。當我在我的機器上運行一切正常。但是當我通過IIS運行我的網站時。它有問題:對象引用未設置爲對象的實例。下面將excel轉換爲xml

是我的代碼:

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

     } 

異常詳細信息:System.NullReferenceException:未設置爲一個對象的實例對象引用。

請給我建議一些解決方案。謝謝

+0

張貼一些代碼... – dakait 2013-03-18 03:19:34

+0

你需要張貼代碼和錯誤。 – 2013-03-18 03:32:45

+0

我有問題; Sheet.lenght ....爲什麼不出現在我的機器? – user2180840 2013-03-18 03:50:25

回答

0

在調用sheet.length之前,您需要將工作表設置爲對象。

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"); 

參考Generate Excel from XML and Generate XML from Excel

0

你需要檢查filename具有正確的路徑Excel文件或沒有。

如果該路徑是正確的。您需要將NETWORK SERVICE帳戶的權限授予您正在嘗試讀取或寫入的文件夾。

不確定_ReadExcel.getSheetNames方法內部是什麼,但是它將'null'值返回到'filename'輸入。您需要通過在Visual Studio中附加IIS進程來調試應用程序。那麼你可以在IIS上運行時發現問題。

步驟,調試IIS:

  • 調試 - >附加到進程...
  • 從列表中選擇Aspnet_wp.exe進程。
  • 如果您運行的IIS版本爲5,則該進程將爲w3wp.exe,並且每個應用程序池將會有一個(因此,如果您不知道該打開哪個應用程序池,則需要附加到所有他們)