环境是 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();
}