CodeGo.net>如何提示用户保存一个自动的Excel文件
收藏

提问

我已经搜索了,但是没有发现任何东西直接打到我要寻找的东西上(或者我的搜索没有碰到单词组合).

在C#中,我使用Interop.Excel创建了一个Excel工作表,在其中插入了一些数据并创建了图表.当我执行xlWorkBook.SaveAs时,一切正常.

我要做的是提示用户将自动化工作簿放置在具有自己文件名的位置.我尝试过(http://p2p.wrox.com/vb-how/63900-disabling-second-excel-save-prompt.html)他基本上在其中执行一个新的SaveFileDialog,然后如果其== OK,则构建他的Excel工作表,然后他说他的workbook.SaveAs(FilePathFromSaveAsDialog)会引起提示.尝试时,出现“当应用程序不在UserInteractive模式下运行时显示模式对话框不是有效操作”错误.
我将粘贴所有代码,但是它在单独的系统上,但是唯一的是:

using Excel = Microsoft.Office.Interop.Office 

//....then on click of link button....

Excel.Application xlApp;
Excel.Workbook xlWorbook;
Excel.Workbooks xlWorkbooks;
Excel.Sheets xlSheets;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.ApplicationClass();
xlWorkBooks = xlApp.Workbooks;
xlWorkBook = xlWorbooks.Add(misValue);
xlSheets = xlWorkBook.Worksheets;
xlWorkSheet = (Excel.Worksheet)xlSheets.get_Item(1);

//....Now I fill my Excel sheet data and make my chart >>> then I close like below...

xlApp.DisplayAlerts = true;

//HERE IS WHERE I WANT TO EITHER PASS THE PATH AND FILE NAME FROM USER OR USE A PROMPT
xlWorkBook.SaveAs("Test.xls", Excel.XFileFormat.XlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);    
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();

//finally I release all my objects via Marshal.ReleaseComObject then GC.Collect

最佳答案

如果将文件保存后保存在某处,则可以使用“响应”.

这是一个例子:

  const string fName = @"C:\Test.xls";
  FileInfo fi = new FileInfo(fName);
  long sz = fi.Length;

  Response.ClearContent();
  Response.ContentType = Path.GetExtension(fName);
  Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}",System.IO.Path.GetFileName(fName)));
  Response.AddHeader("Content-Length", sz.ToString("F0"));
  Response.TransmitFile(fName);
  Response.End();

这应该提示用户他们要在计算机上存储文件的位置.

    公众号
    关注公众号订阅更多技术干货!