基于C#的文档处理

环境是 C# + .NET Framework 4.0 + Visual Studio 2010 ,要实现对 Excel、Word、PowerPoint创建、读取、写入 以及转换为 PDF

这些操作可以完全通过 Microsoft Office Interop 来实现


🔧 一、准备工作

1. 安装与引用 Office Interop 库

你需要在项目中手动添加 COM 引用:

Visual Studio 2010 中:

复制代码
项目 → 添加引用 → COM → 搜索:

分别添加以下引用:

  • Microsoft Excel xx.0 Object Library
  • Microsoft Word xx.0 Object Library
  • Microsoft PowerPoint xx.0 Object Library
  • Microsoft Office xx.0 Object Library

⚠️ 其中 xx.0 取决于你的 Office 版本(例如 14.0 对应 Office 2010)。

添加后,命名空间如下:

csharp 复制代码
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

📘 二、Excel 文档操作

1. 创建与写入 Excel 文件

csharp 复制代码
using Excel = Microsoft.Office.Interop.Excel;

public void CreateExcel()
{
    Excel.Application app = new Excel.Application();
    Excel.Workbook workbook = app.Workbooks.Add();
    Excel.Worksheet sheet = (Excel.Worksheet)workbook.ActiveSheet;

    sheet.Cells[1, 1] = "姓名";
    sheet.Cells[1, 2] = "成绩";
    sheet.Cells[2, 1] = "张三";
    sheet.Cells[2, 2] = "95";

    workbook.SaveAs(@"C:\test.xlsx");
    workbook.Close();
    app.Quit();
}

2. 读取 Excel 文件

csharp 复制代码
public void ReadExcel()
{
    Excel.Application app = new Excel.Application();
    Excel.Workbook workbook = app.Workbooks.Open(@"C:\test.xlsx");
    Excel.Worksheet sheet = (Excel.Worksheet)workbook.Sheets[1];

    string name = sheet.Cells[2, 1].Value.ToString();
    double score = sheet.Cells[2, 2].Value;

    MessageBox.Show($"{name} 的成绩是 {score}");

    workbook.Close(false);
    app.Quit();
}

3. Excel 转 PDF

csharp 复制代码
public void ExcelToPdf()
{
    Excel.Application app = new Excel.Application();
    Excel.Workbook workbook = app.Workbooks.Open(@"C:\test.xlsx");

    workbook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, @"C:\test.pdf");

    workbook.Close(false);
    app.Quit();
}

📗 三、Word 文档操作

1. 创建与写入 Word 文件

csharp 复制代码
using Word = Microsoft.Office.Interop.Word;

public void CreateWord()
{
    Word.Application app = new Word.Application();
    Word.Document doc = app.Documents.Add();

    Word.Paragraph para = doc.Content.Paragraphs.Add();
    para.Range.Text = "这是一个自动生成的Word文档。";
    para.Range.InsertParagraphAfter();

    doc.SaveAs(@"C:\test.docx");
    doc.Close();
    app.Quit();
}

2. 在 Word 中插入表格

csharp 复制代码
public void InsertTable()
{
    Word.Application app = new Word.Application();
    Word.Document doc = app.Documents.Open(@"C:\test.docx");

    Word.Range range = doc.Content;
    range.Collapse(Word.WdCollapseDirection.wdCollapseEnd);

    Word.Table table = doc.Tables.Add(range, 3, 3);
    table.Borders.Enable = 1;
    table.Cell(1, 1).Range.Text = "姓名";
    table.Cell(1, 2).Range.Text = "性别";
    table.Cell(1, 3).Range.Text = "成绩";

    table.Cell(2, 1).Range.Text = "张三";
    table.Cell(2, 2).Range.Text = "男";
    table.Cell(2, 3).Range.Text = "95";

    doc.Save();
    doc.Close();
    app.Quit();
}

3. 删除 Word 中的表格

csharp 复制代码
public void DeleteTables()
{
    Word.Application app = new Word.Application();
    Word.Document doc = app.Documents.Open(@"C:\test.docx");

    for (int i = doc.Tables.Count; i >= 1; i--)
    {
        doc.Tables[i].Delete();
    }

    doc.Save();
    doc.Close();
    app.Quit();
}

4. Word 转 PDF

csharp 复制代码
public void WordToPdf()
{
    Word.Application app = new Word.Application();
    Word.Document doc = app.Documents.Open(@"C:\test.docx");

    doc.ExportAsFixedFormat(@"C:\test.pdf", Word.WdExportFormat.wdExportFormatPDF);

    doc.Close();
    app.Quit();
}

📙 四、PowerPoint 文档操作

1. 创建 PowerPoint 幻灯片并写入内容

csharp 复制代码
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

public void CreatePPT()
{
    PowerPoint.Application app = new PowerPoint.Application();
    PowerPoint.Presentation pres = app.Presentations.Add(MsoTriState.msoTrue);

    PowerPoint.Slide slide = pres.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutText);
    slide.Shapes[1].TextFrame.TextRange.Text = "自动生成的PPT";
    slide.Shapes[2].TextFrame.TextRange.Text = "这是第二个文本框。";

    pres.SaveAs(@"C:\test.pptx");
    pres.Close();
    app.Quit();
}

2. 读取 PPT 文本内容

csharp 复制代码
public void ReadPPT()
{
    PowerPoint.Application app = new PowerPoint.Application();
    PowerPoint.Presentation pres = app.Presentations.Open(@"C:\test.pptx",
        MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

    foreach (PowerPoint.Slide slide in pres.Slides)
    {
        foreach (PowerPoint.Shape shape in slide.Shapes)
        {
            if (shape.HasTextFrame == MsoTriState.msoTrue)
            {
                string text = shape.TextFrame.TextRange.Text;
                Console.WriteLine(text);
            }
        }
    }

    pres.Close();
    app.Quit();
}

3. PowerPoint 转 PDF

csharp 复制代码
public void PptToPdf()
{
    PowerPoint.Application app = new PowerPoint.Application();
    PowerPoint.Presentation pres = app.Presentations.Open(@"C:\test.pptx",
        MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

    pres.SaveAs(@"C:\test.pdf", PowerPoint.PpSaveAsFileType.ppSaveAsPDF);
    pres.Close();
    app.Quit();
}
相关推荐
m0_748708057 分钟前
C++中的观察者模式实战
开发语言·c++·算法
qq_5375626719 分钟前
跨语言调用C++接口
开发语言·c++·算法
wjs202430 分钟前
DOM CDATA
开发语言
Tingjct31 分钟前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
猷咪1 小时前
C++基础
开发语言·c++
IT·小灰灰1 小时前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧1 小时前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q1 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳01 小时前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾1 小时前
php 对接deepseek
android·开发语言·php