XLS TO PDF

Microsoft.Office.Interop.Excel.XlFixedFormatType targetType = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.ApplicationClass application = null;

            Microsoft.Office.Interop.Excel.Workbook workBook = null;

            try

            {

                application = new Microsoft.Office.Interop.Excel.ApplicationClass();

                application.Visible = false;

                workBook = application.Workbooks.Open(sourcePath);

                foreach (var worksheet in workBook.Sheets)

                {

                    ((Microsoft.Office.Interop.Excel._Worksheet)worksheet).PageSetup.PrintArea = "";//设置为空,将忽略打印区域,将该sheet中都打印

                    //((Microsoft.Office.Interop.Excel._Worksheet)worksheet).PageSetup.Orientation//

                    //    = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape;//设置打印方向纵向或横向

                }

                //workBook.SaveAs();

                workBook.ExportAsFixedFormat(targetType, targetPath);

                //workBook.Saved = false;

                result = true;

            }

            catch (System.Exception e)

            {

                Console.WriteLine(e.Message);

                result = false;

            }

            finally

            {

                //System.Windows.Forms.Clipboard.Clear();

                if (workBook != null)

                {

                    Marshal.ReleaseComObject(workBook);

                    workBook = null;

                }

 

                if (workBook != null)

                {

                    Marshal.ReleaseComObject(workBook);

                    workBook = null;

                }

 

                // Save the excel main window handle to force exit excel when necessary.

                IntPtr hWnd = new IntPtr(application.Parent.Hwnd);

                application.Quit();

 

                if (application != null)

                {

                    Marshal.ReleaseComObject(application);

                    application = null;

                }

 

 

                GC.Collect();

                GC.WaitForPendingFinalizers();

 

                // Kill excel if needed.

                EndTask(hWnd, true, true);

            }

 

 [DllImport("user32.dll", SetLastError = true)]

        private static extern bool EndTask(IntPtr hWnd, bool fShutDown, bool fForce);

 

 

  • 导出不成功有很多原因
  • 1.xls文档有加密或需要更新数据
  • 2.office 2007 的 没有安装插件SaveAsPDFandXPS.exe
  • 3.权限问题(特别是IIS部署的)
  • a.访问路径的权限
  • b.Docm 的权限
  • c.print的权限(很容易忽视,因为不报错)Printers and Faxes 中(Send To OneNote 2010,需要一个打印驱动)添加network,network service
posted @ 2014-03-24 10:59  游子看世界  阅读(203)  评论(0)    收藏  举报