C#操作ms office实现office转pdf

前提

安装office 2019
安装vs 2022

新建项目

引入4个com包
在这里插入图片描述
在这里插入图片描述

编写代码

代码结构
在这里插入图片描述
代码如下

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值