gpt4 book ai didi

c# - 如何在 sql server 中存储 Microsoft Word 文档的格式化片段

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:34 24 4
gpt4 key购买 nike

我需要提取 Word 文档的格式化文本片段并将其存储在 SQL Server 表中,以供稍后处理,然后使用 C# 重新插入到 Word 文档中。

我看过 Word DOM,看来我需要结合使用 Document.Load()、Document.Save() 和 Range.Copy()、Range.Paste() 方法来为每个片段创建一个文件,然后我将其加载到数据库中。

难道没有更简单(更高效)的方法吗?

顺便说一句,代码片段可以是隐藏文本,我正在考虑将片段存储为 RTF。

最佳答案

最后我必须使用 Aspose.Words for .NET从我感兴趣的 Word 文件中提取代码片段并将它们存储为 RTF:

// Get insteresting code snippets (in this case text runs with 
// style "tw4winMark")
Document sourceDocument = new Document(fileName);
var runs = sourceDocument.GetChildNodes(NodeType.Run, true)
.Select(r => r.Font.StyleName == "tw4winMark").ToList();

// Store snippets into temporary document
// Read Aspose documentation for details
Document document = new Document();
if (runs.Count > 0) {
NodeImporter nodeImporter = new NodeImporter(
runs[0].Document,
document,
ImportFormatMode.KeepSourceFormatting
);

foreach (Run run in runs) {
Run importedRun = nodeImporter.ImportNode(run, true) as Run;
importedRun.Font.Hidden = false;
document.Sections[0].Body.Paragraphs[0].AppendChild(importedRun);
}
}

// save temporary document in MemoryStream as RTF
RtfSaveOptions saveOptions = new RtfSaveOptions();
MemoryStream ms = new MemoryStream();
document.Save(ms, saveOptions);

// retrieve RTF from MemoryStream
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
string rtf = sr.ReadToEnd();

然后可以像往常一样将 rtf 存储到数据库的文本字段中,并在 RTF 文本控件中对其进行编辑。

关于c# - 如何在 sql server 中存储 Microsoft Word 文档的格式化片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com