发布:2024/6/8 8:04:49作者:管理员 来源:本站 浏览次数:718
需要引入referece: Microsoft.Office.Interop.Word.dll (适用于word2007,2010等早期版本)
适用于word2016可以使用NPOI(在Preferences->Manage Nuget Packages中搜索NPOI)
下面是使用npoi创建word文档和读取其中段落文字的简单方法:
static void Main(string[] args)
{
CreateFile();
Console.WriteLine(ExcuteWordText());
Console.ReadLine();
}
public static void CreateFile()
{
XWPFDocument doc = new XWPFDocument(); //文档
XWPFParagraph p1 = doc.CreateParagraph(); //段落
p1.Alignment = ParagraphAlignment.CENTER; //字体居中
p1.IndentationFirstLine = (int)100; //首行缩进
XWPFRun r1 = p1.CreateRun(); //向该段落中添加文字
r1.SetText("测试段落一");
XWPFParagraph p2 = doc.CreateParagraph();
p2.Alignment = ParagraphAlignment.LEFT;
XWPFRun r2 = p2.CreateRun();
r2.SetText("测试段落二");
FileStream out1 = new FileStream("simple.docx", FileMode.Create);
doc.Write(out1);
out1.Close();
}
//读段落
public static string ExcuteWordText()
{
StringBuilder sb = new StringBuilder();
using (FileStream stream = File.OpenRead(AppDomain.CurrentDomain.BaseDirectory+ "\\"+"simple.docx"))
{
XWPFDocument doc = new XWPFDocument(stream);
foreach (var para in doc.Paragraphs)
{
string text = para.ParagraphText; //获得文本
var runs = para.Runs;
string styleid = para.Style;
for (int i = 0; i < runs.Count; i++)
{
var run = runs[i];
text = run.ToString(); //获得run的文本
sb.Append(text + ",");
}
}
}
return sb.ToString();
}
下面是两个处理table中文字格式的方法(未调试)
/// <summary>
/// 设置字体格式
/// </summary>
/// <param name="doc"></param>
/// <param name="table"></param>
/// <param name="setText"></param>
/// <returns></returns>
public XWPFParagraph SetCellText(XWPFDocument doc, XWPFTable table, string setText)
{
//table中的文字格式设置
CT_P para = new CT_P();
XWPFParagraph pCell = new XWPFParagraph(para, table.Body);
pCell.Alignment = ParagraphAlignment.CENTER;//字体居中
pCell.VerticalAlignment = TextAlignment.CENTER;//字体居中
XWPFRun r1c1 = pCell.CreateRun();
r1c1.SetText(setText);
r1c1.FontSize = 12;
r1c1.SetFontFamily("华文楷体", FontCharRange.None);//设置雅黑字体
//r1c1.SetTextPosition(20);//设置高度
return pCell;
}
/// <summary>
/// 设置单元格格式
/// </summary>
/// <param name="doc">doc对象</param>
/// <param name="table">表格对象</param>
/// <param name="setText">要填充的文字</param>
/// <param name="align">文字对齐方式</param>
/// <param name="textPos">rows行的高度</param>
/// <returns></returns>
public XWPFParagraph SetCellText(XWPFDocument doc, XWPFTable table, string setText, ParagraphAlignment align, int textPos)
{
CT_P para = new CT_P();
XWPFParagraph pCell = new XWPFParagraph(para, table.Body);
//pCell.Alignment = ParagraphAlignment.LEFT;//字体
pCell.Alignment = align;
XWPFRun r1c1 = pCell.CreateRun();
r1c1.SetText(setText);
r1c1.FontSize = 12;
r1c1.SetFontFamily("华文楷体", FontCharRange.None);//设置雅黑字体
r1c1.SetTextPosition(textPos);//设置高度
return pCell;
}
参考文档:
NPOI创建DOCX常用操作 - gltide的专栏 - CSDN博客
使用NOPI读取Word、Excel文档内容 - 马洪彪 - 博客园
C#word(2007)操作类--新建文档、添加页眉页脚、设置格式、添加文本和超链接、添加图片、表格处理、文档格式转化 - lantionzy - 博客园
© Copyright 2014 - 2025 柏港建站平台 ejk5.com. 渝ICP备16000791号-4