public void 预览Excel文件(string fileName)
{
     try
     {
         excel读取结果 = null;
         excel进程开始时间 = DateTime.Now;
         excel方法实例 = new Application();
         excel方法实例.Workbooks.Open(fileName, 0, true, 5, null, null, true, 1, null, false, false, null, false, null, null);
         excel方法实例.Visible = true;
         _Worksheet workSheet = (_Worksheet)excel方法实例.Sheets.get_Item(1);
         excel进程结束时间 = DateTime.Now;
         workSheet.PrintPreview(false);
         excel方法实例.Workbooks.Close();
         excel方法实例.Quit();
     }
     catch(Exception 异常信息)
     {
         throw 异常信息;
     }
}
在执行到workSheet.PrintPreview(false)时提示异常,请教大虾妙论。

解决方案 »

  1.   

    OK,已经解决预览的问题,暂不使用PrintPreview方法,直接调用Excel的宏。
    public void 预览Excel文件(string fileName)
            {
                try
                {
                    excel读取结果 = null;
                    excel进程开始时间 = DateTime.Now;
                    excel方法实例 = new Application();
                    excel方法实例.Workbooks.Open(fileName, 0, true, 5, null, null, true, 1, null, false, false, null, false, null, null);
                    excel方法实例.Visible = true;
                    _Worksheet workSheet = (_Worksheet)excel方法实例.Sheets[1];
                    excel进程结束时间 = DateTime.Now;
                    excel方法实例.Run("Preview", Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing,
                        Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing);
                    excel方法实例.Workbooks.Close();
                    excel方法实例.Quit();
                }
                catch (Exception 异常信息)
                {
                    throw 异常信息;
                }
                finally
                {
                    关闭Excel进程(excel进程开始时间, excel进程结束时间);
                }
            }
      

  2.   

    public void 预览Excel文件(string fileName)
    {
         try
         {
              excel读取结果 = null;
              excel进程开始时间 = DateTime.Now;
              excel方法实例 = new Excel.Application();
              excel方法实例.Workbooks.Open(fileName, 0, true, 5, null, null, true, 1, null, false, false, null, false, null, null);
              excel方法实例.Visible = true;
              excel进程结束时间 = DateTime.Now;
              VBProject myVb = excel方法实例.Workbooks[1].VBProject;
              VBComponent myModule = myVb.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
              string MyMacroCode = "sub Preview()" + Environment.NewLine +
                        "   ActiveWindow.SelectedSheets.PrintPreview" +
                        Environment.NewLine + "end sub";
              myModule.CodeModule.AddFromString(MyMacroCode);
              excel方法实例.Run("Preview", Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing,
                        Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing);
             excel方法实例.Workbooks.Close();
             excel方法实例.Quit();
         }
         catch (Exception 异常信息)
         {
              throw 异常信息;
         }
         finally
         {
              关闭Excel进程(excel进程开始时间, excel进程结束时间);
         }
    }
    以上方法需要添加对Microsoft.Office.Interop.Excel.dll和Microsoft.Vbe.Interop.dll的引用