【发布时间】:2011-11-01 22:20:53
【问题描述】:
我正在构建一个 asp.net 网站,并且正在构建一个基于一些 gridview 数据的 Excel 文档。我正在使用Microsoft.Office.Interop.Excel 来构建它。我尝试使用saveFileDialog 框使用System.Windows.Forms。通过我的在线研究,我了解到您实际上不能在 asp.net 应用程序中执行此操作?在调试模式下一切正常,但在将其上传到站点时,页面根本不起作用。所以我的问题是,是否可以将saveFileDialog 框用于 asp.net 应用程序?有谁知道一个好的解决方法?我将发布在调试模式下运行良好的代码,但在我将其上传到我的站点时却无法运行。提前感谢您的帮助。
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();
}
}
【问题讨论】:
-
它可能正在显示对话框...在您的服务器上,那里没有人可以看到它!
标签: asp.net excel export-to-excel download