基于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();
}
相关推荐
小王不爱笑13240 分钟前
IO 模型
开发语言·python
知我Deja_Vu1 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
AI+程序员在路上1 小时前
CANopen 协议:介绍、调试命令与应用
linux·c语言·开发语言·网络
2401_831824961 小时前
基于C++的区块链实现
开发语言·c++·算法
m0_518019482 小时前
C++与机器学习框架
开发语言·c++·算法
ZTLJQ2 小时前
深入理解逻辑回归:从数学原理到实战应用
开发语言·python·机器学习
qq_417695052 小时前
C++中的代理模式高级应用
开发语言·c++·算法
波波0073 小时前
每日一题:.NET 中的“反射”是什么?
开发语言·.net
qq_461489333 小时前
C++与Qt图形开发
开发语言·c++·算法
Evand J3 小时前
【三维飞行器】RRT路径规划与TOA定位仿真系统,MATLAB例程,路径起终点、障碍物、TOA锚点等均可设置。附下载链接
开发语言·matlab·无人机·定位·rrt·toa·三维航迹规划