C#操作ms office实现office转pdf

前提

安装office 2019

安装vs 2022

新建项目

引入4个com包

编写代码

代码结构

代码如下

cs 复制代码
using Microsoft.Office.Interop.Excel;

namespace UseMsOffice
{
    internal class Program
    {
        static void Main(string[] args)
        {
            WordToPdf();
            ExcelToPdf();
            PPTToPdf();
        }

        static void WordToPdf()
        {
            // Word应用程序对象  
            var wordApp = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document? doc = null;
            string root = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? "";
            try
            {
                // 设置为不可见模式  
                wordApp.Visible = false;
                var docPath = Path.Combine(root, "Document", "office.docx");
                // 打开一个现有的Word文档  
                doc = wordApp.Documents.Open(docPath);

                // 将文档另存为PDF  
                string pdfPath = Path.Combine(root, $"{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")}_office.pdf");
                doc.ExportAsFixedFormat(pdfPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);

                // 关闭文档和Word应用  
                doc.Close();
                wordApp.Quit();

                Console.WriteLine("文档已成功转换为PDF格式。");
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生错误:" + ex.Message);
            }
            finally
            {
                // 释放COM对象  
                System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);
                doc = null;
                wordApp = null;
            }
        }

        static void ExcelToPdf()
        {
            // Excel应用程序对象  
            var excelApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook workBook = null;
            string root = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? "";
            try
            {
                // 设置为不可见模式  
                excelApp.Visible = false;
                var docPath = Path.Combine(root, "Document", "office.xlsx");
                // 打开一个现有的Word文档  
                workBook = excelApp.Workbooks.Open(docPath);

                // 将文档另存为PDF  
                string pdfPath = Path.Combine(root, $"{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")}_office.pdf");
                workBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfPath);

                // 关闭文档和Word应用  
                workBook.Close();
                excelApp.Quit();

                Console.WriteLine("文档已成功转换为PDF格式。");
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生错误:" + ex.Message);
            }
            finally
            {
                // 释放COM对象  
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
                workBook = null;
                excelApp = null;
            }
        }

        static void PPTToPdf()
        {
            // Excel应用程序对象  
            var pptApp = new Microsoft.Office.Interop.PowerPoint.Application();
            Microsoft.Office.Interop.PowerPoint.Presentation presentation = null;
            string root = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? "";
            try
            {
                // 设置为不可见模式  
                pptApp.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
                var docPath = Path.Combine(root, "Document", "office.pptx");
                // 打开一个现有的Word文档  
                presentation = pptApp.Presentations.Open(docPath);

                // 将文档另存为PDF  
                string pdfPath = Path.Combine(root, $"{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")}_office.pdf");
                presentation.ExportAsFixedFormat(pdfPath,Microsoft.Office.Interop.PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF);

                // 关闭文档和Word应用  
                presentation.Close();
                pptApp.Quit();

                Console.WriteLine("文档已成功转换为PDF格式。");
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生错误:" + ex.Message);
            }
            finally
            {
                // 释放COM对象  
                System.Runtime.InteropServices.Marshal.ReleaseComObject(presentation);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pptApp);
                presentation = null;
                pptApp = null;
            }
        }
    }
}

测试

参考

https://blog.csdn.net/z542601362/article/details/45158215
https://www.cnblogs.com/5426z/articles/4865312.html
https://blog.csdn.net/qq_35620884/article/details/141326517
https://blog.csdn.net/lzp1990/article/details/138810685

相关推荐
松涛和鸣7 小时前
11.C 语言学习:递归、宏定义、预处理、汉诺塔、Fibonacci 等
linux·c语言·开发语言·学习·算法·排序算法
IT痴者8 小时前
《PerfettoSQL 的通用查询模板》---Android-trace
android·开发语言·python
2501_941111249 小时前
C++与自动驾驶系统
开发语言·c++·算法
2501_941111699 小时前
C++中的枚举类高级用法
开发语言·c++·算法
chilavert3189 小时前
技术演进中的开发沉思-191 JavaScript: 发展历程(上篇)
开发语言·javascript·ecmascript
l1t9 小时前
调用python函数的不同方法效率对比测试
开发语言·数据库·python·sql·duckdb
今天吃饺子10 小时前
如何用MATLAB调用python实现深度学习?
开发语言·人工智能·python·深度学习·matlab
2501_9411114610 小时前
C++与硬件交互编程
开发语言·c++·算法
水木姚姚11 小时前
初识C++
开发语言·c++