我有以下程序可以生成示例Word文档:
for line in fileinput.FileInput("zero.html",inplace=1):
if '{problem}' in line:
rep = 'a dynamic var'
line = line.replace('{problem}', rep)
print(line)
似乎工作正常。 “示例文档”以16pt字体正确呈现,粗体和大写。但是,using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace OpenXmlExample
{
class Program
{
static void Main(string[] args)
{
string filePath = @"C:\Users\[Redacted]\Desktop\OpenXmlExample.docx";
using (WordprocessingDocument document = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document))
{
// Create main part and body of document
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
// Prototype code for generation of the document title
Paragraph paragraph = new Paragraph();
ParagraphProperties pPr = new ParagraphProperties
{
Justification = new Justification { Val = JustificationValues.Center }
};
RunProperties rPr = new RunProperties
{
RunFonts = new RunFonts { ComplexScript = new StringValue("Arial") },
Bold = new Bold { Val = true },
Caps = new Caps { Val = true },
FontSize = new FontSize { Val = "32" },
FontSizeComplexScript = new FontSizeComplexScript { Val = "36" }
};
Text t = new Text("Example Document");
Run r = new Run();
r.Append((OpenXmlElement) rPr.Clone());
r.Append(t);
pPr.Append((OpenXmlElement) rPr.Clone());
paragraph.Append(pPr);
paragraph.Append(r);
body.Append(paragraph);
}
}
}
}
部分似乎不起作用。文本仅以默认字体呈现。有人可以帮助我了解我做错了什么吗?如果将ComplexScript = new StringValue("Arial")
属性设置为Arial,这似乎可行,但是我希望将其作为Ascii
标签生成。
答案 0 :(得分:1)
单次运行可以配置4种不同的字体。
这些字体中每种字体的使用应由运行内容的Unicode字符值确定。
ASCII 用于Unicode范围(U + 0000-U + 007F)中的字符。
复杂脚本,用于复杂脚本Unicode范围内的字符,例如阿拉伯文字。
东亚,用于东亚Unicode范围内的字符,例如。日语。
高ANSI :用于Unicode范围内的字符,不属于其他类别之一。
“示例文档”中的字符全部属于ASCII组,因此将应用相应组的字体。
在MSDN和Office Open XML处有更多详细信息。