学习C#调用OpenXml操作word文档的基本用法(12:读取文档字体表)

  OpenXml中使用FontTablePart类保存Word文档字体表,存储和管理Word文档中使用的字体信息。采用解压缩软件打开Word文档,其内的word文件夹中有独立的fontTable.xml文件,用于保存文档中使用的字体信息,如下图所示:

  FontTablePart类的Fonts属性保存字体集合,其命名空间及类型为DocumentFormat.OpenXml. Wordprocessing.Fonts,通过调用fonts.Elements函数获取DocumentFormat.OpenXml. Wordprocessing. Font类型集合,Font类保存具体的字体信息,其主要属性如下所示:

序号 名称 说明
1 Name 字体名称 ,如Arial、Times New Roman
2 FontFamily 字体族,如auto(自动)、roman(罗马字体)
3 FontCharSet 字符集标识
4 FontSignature 字体签名
5 AltName 替代字体名称

  最后是代码示例及运行效果,第一次读取文档字体表时只有3种字体,接着在word文档中重新设置了几种字体,再次读取字体表时则会显示新设置的字体名称。

csharp 复制代码
using (WordprocessingDocument document = WordprocessingDocument.Open(txtFilePath.Text, false))
{
    FontTablePart fPart = document.MainDocumentPart.FontTablePart;
    if (fPart == null)
    {
        MessageBox.Show("Word文档不包含字体表");
        return;
    }

    var fonts = fPart.Fonts;

    if (fonts == null || fonts.Count()<=0)
    {
        MessageBox.Show("字体表为空");
        return;
    }

    // 遍历所有字体定义
    foreach (DocumentFormat.OpenXml.Wordprocessing.Font font in fonts.Elements<DocumentFormat.OpenXml.Wordprocessing.Font>())
    {
        ListViewItem lvi = new ListViewItem(Convert.ToString(lstFonts.Items.Count + 1));
        lvi.SubItems.Add(font.Name);
        lvi.SubItems.Add(font.FontCharSet.Val);
        lvi.SubItems.Add(font.FontFamily.Val);

        lstFonts.Items.Add(lvi);            
    }
}

  

参考文献

1https://github.com/dotnet/Open-XML-SDK

2https://learn.microsoft.com/zh-cn/office/open-xml/open-xml-sdk

3https://learn.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.wordprocessing.style?view=openxml-3.0.1

4https://blog.csdn.net/i042416/article/details/126228816

相关推荐
ms365copilot9 小时前
Copilot 代理开始进入Word、Excel、PowerPoint,不再只是“问一句答一句”
word·excel·copilot
Logic10111 小时前
Excel信息+照片文件夹,自动合成word格式化文档
word·excel·办公自动化·邮件合并·office技巧·自动插入图片·插入域
万化冥合1 天前
怎么批量把 Word 转 PDF?
python·pdf·c#·word
十碗饭吃不饱1 天前
Apache POI 踩坑:setFontFamily 二次设置字体不生效、样式残留问题深度解析
java·word·apache
brian00313 天前
word插件,像wps一样双击放大图片
word·wps·双击放大图片
DFT计算杂谈4 天前
LaTeX 格式公式复制至 Word 并快捷转换操作
word
weixin_416660074 天前
千问回答转 Word 后,表格和公式是真能编辑,还是看起来像?
word·markdown·千问
ratel️4 天前
小墨析 · Office Agent 日常办公不烧心
python·langchain·word·excel·fastapi·js·ppt
MetaEnchanter4 天前
PDF 转 Word:只改其中几页,不用整份重新整理
pdf·word
麦序子5 天前
用 Python + python-docx 批量生成带表格样式的装修报价单 Word 文档(含合计公式)
开发语言·python·自然语言处理·word·python3.11