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

相关推荐
三体世界8 分钟前
TCP传输控制层协议深入理解
linux·服务器·开发语言·网络·c++·网络协议·tcp/ip
随心点儿29 分钟前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农32 分钟前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
熊出没35 分钟前
Vue前端导出页面为PDF文件
前端·vue.js·pdf
tomcsdn3138 分钟前
SMTPman,smtp的端口号是多少全面解析配置
服务器·开发语言·php·smtp·邮件营销·域名邮箱·邮件服务器
试行43 分钟前
C#System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。
c#
EnigmaCoder43 分钟前
Java多线程:核心技术与实战指南
java·开发语言
最懒的菜鸟2 小时前
MinerU将PDF转成md文件,并分拣图片
人工智能·pdf
大白的编程日记.2 小时前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
网小鱼的学习笔记2 小时前
python中MongoDB操作实践:查询文档、批量插入文档、更新文档、删除文档
开发语言·python·mongodb