我正在構建一個asp.net網站,我正在構建基於一些gridview數據的Excel文檔。我使用Microsoft.Office.Interop.Excel
來構建它。我試圖使用saveFileDialog
框使用System.Windows.Forms
。通過我的在線研究,我瞭解到你不能在asp.net應用程序中做到這一點?在調試模式下一切都很好,但是當它上傳到網站時,頁面根本不起作用。所以我的男人的問題是,是否有可能使用一個asp.net應用程序的saveFileDialog
框?有誰知道一個很好的解決方法嗎?我將發佈在調試模式下工作良好的代碼,但在將代碼上傳到我的網站時不起作用。預先感謝您的幫助。如何從您的asp.net應用程序下載生成的excel文件
using System.Threading;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
public void someEvent()
{
var t = new Thread(SaveFolder);
t.IsBackground = true;
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
public void SaveFolder()
{
saveFileDialog1.Filter = "Sources (*.xls, *.xlsx)|*.xls*;*.xlsx";
saveFileDialog1.ShowDialog();
exportReport();
}
public void exportReport()
{
xlWorkBook.SaveAs(@saveFileDialog1.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
releaseObject(xlWorkSheet);
}
public void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
它可能會顯示對話...在您的服務器上,沒有人在那裏看到它! –