当前位置:
首页 > Python基础教程 >
-
C#教程之C# 使用NPOI处理word
需要引入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;
}
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式