基于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();
}
相关推荐
小小龙学IT8 分钟前
Qt 6 跨平台开发完全指南:从信号槽机制到实际项目落地
开发语言·qt
leisoo80979 分钟前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
敢敢のwings1 小时前
智元 GO-2 与 AgiBot-World 深度解读
开发语言·后端·golang
yaoxin5211231 小时前
503. Java 反射 - 编写 ServiceFactory 类
java·开发语言·python
一个帅气昵称啊1 小时前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
冬夜戏雪2 小时前
agent的trace 和eval
开发语言·前端·javascript
Sagittarius_A*2 小时前
Burst Lab | PHP 审计 13|反序列化(三):POP 链构造与 Gadget Chain 分析
开发语言·web安全·php·代码审计·反序列化
职场的momo2 小时前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
蓝速科技2 小时前
蓝速科技丨新旧楼宇混杂场景下会议室预约门牌屏一体化改造方案
开发语言·科技·php
梦想的旅途23 小时前
Python实现企业微信文本消息发送
开发语言·python·企业微信