0
我在寫LigthSwitch應用程序,其中一個要求是將數據導出到Excel。我完成了這樣的任務。當應用程序在本地主機上運行時,它可以很好地工作。然而,當我上傳應用程序到SharePoint網站我獲得以下錯誤:Excel 500(內部服務器錯誤)
無法加載資源:服務器500(內部服務器錯誤)的狀態https://437aa483-68ef-4ae1-9269-b206f5beb418.o365apps.net/setExcelDocument.ashx
下面是示例代碼迴應(只要複製,參考excel.dll並添加觸發器):
private Microsoft.Office.Interop.Excel.Application app = null;
private Microsoft.Office.Interop.Excel.Workbook workbook = null;
private Microsoft.Office.Interop.Excel.Worksheet worksheet = null;
private Microsoft.Office.Interop.Excel.Range workSheet_range = null;
private void createOpportunity()
{
try
{
app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
workbook = app.Workbooks.Add(1);
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
worksheet.Cells[5,1] = "hello World";
workSheet_range = worksheet.get_Range("B5", "Q5");
workSheet_range.Merge(14);
string b = "YELLOW";
switch (b)
{
case "YELLOW":
workSheet_range.Interior.Color = System.Drawing.Color.Yellow.ToArgb();
break;
case "GRAY":
workSheet_range.Interior.Color = System.Drawing.Color.Gray.ToArgb();
break;
case "GAINSBORO":
workSheet_range.Interior.Color =
System.Drawing.Color.Gainsboro.ToArgb();
break;
case "Turquoise":
workSheet_range.Interior.Color =
System.Drawing.Color.Turquoise.ToArgb();
break;
case "PeachPuff":
workSheet_range.Interior.Color =
System.Drawing.Color.PeachPuff.ToArgb();
break;
default:
// workSheet_range.Interior.Color = System.Drawing.Color..ToArgb();
break;
}
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.Font.Bold = true;
workSheet_range.ColumnWidth = 14;
string fcolor = "n";
if (fcolor.Equals(""))
{
workSheet_range.Font.Color = System.Drawing.Color.White.ToArgb();
}
else
{
workSheet_range.Font.Color = System.Drawing.Color.Black.ToArgb();
}
worksheet.Cells[7,2] = "hi";
workSheet_range = worksheet.get_Range("B7", "C7");
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.NumberFormat = "#,##0";
}
從ASP.NET或其他服務器技術中使用Office Interop是一個可怕的想法。這些API被編寫用於桌面應用程序,用於自動化Office(一套桌面應用程序)。服務器應用程序在許多方面有所不同,因此在其中使用Office Interop是非常非常糟糕的主意。它也不受Microsoft的支持,並可能違反您的Office許可證。請參閱[服務器端自動化辦公室的注意事項](http://support.microsoft.com/kb/257757) –
此外,擺脫該try/catch塊。除了弄亂堆棧跟蹤並導致混淆以外,它對你沒有任何幫助。你用作參數的'e.ToString()'將成爲新異常的'Message'屬性,這也不是你想要的。完全擺脫try/catch。 –