如何实现把一个word文件,1:1的复制到一个新文件中?
不适用clone的方式。
Ula.wang wrote:您好,
感谢来信。
您如果不想使用clone的方法,就需要解析原文档获取段落文字、图片、段落样式等,然后把这些内容添加给新文档,这样实现起来十分复杂。更推荐您使用clone的方式实现您的需求。
如果您有任何疑问,请反馈,非常感谢。
Sincerely,
Ula
E-iceblue support team
zyzx0727 wrote:Ula.wang wrote:您好,
感谢来信。
您如果不想使用clone的方法,就需要解析原文档获取段落文字、图片、段落样式等,然后把这些内容添加给新文档,这样实现起来十分复杂。更推荐您使用clone的方式实现您的需求。
如果您有任何疑问,请反馈,非常感谢。
Sincerely,
Ula
E-iceblue support team
sourceDoc.CloneCompatibilityTo(destinationDoc);
sourceDoc.CloneDefaultStyleTo(destinationDoc);
sourceDoc.CloneThemesTo(destinationDoc);
sourceDoc.CloneWebSettingsTo(destinationDoc);
foreach (Section section in sourceDoc.Sections)
{
Section newSection = (Section)section.Clone();
section.CloneSectionPropertiesTo(newSection);
destinationDoc.Sections.Add(newSection);
}
我通过这种方式,复制了Word文件,基本上1:1还原了,但是目标word文件的表格有区别,没有保留源文件的表格格式,怎么能够保证表格也一模一样呢?
static void Main(string[] args)
{
//新建Word文档1,用于加载待复制内容的源文档
Document sourceDoc = new Document(@"E:\\示例\\测试题\\8月8日测试题\\expect.docx");
//新建Word文档2,用于加载复制内容的目标文档
Document destinationDoc = new Document();
//遍历源word文档中的所有section,并把内容复制到目标word文档
foreach (Section sec in sourceDoc.Sections)
{
destinationDoc.Sections.Add(sec.Clone());
}
//保存文档
destinationDoc.SaveToFile(@"E:\\示例\\测试题\\8月8日测试题\\result2.docx", FileFormat.Docx2016);
}
Ula.wang wrote:你好,
感谢你的咨询。
我模拟了一个Word文档并通过最新商业版的Spire.Doc for .net 11.8.1测试了您提供的代码,但我没有重现您的的问题。您是否使用的是我们的最新商业版本?如果不是,请使用最新版本重新测试。另外,您结果文档保存的格式是什么呢?(如:FileFormat.Docx_2016)。
关于文档1:1复制您还可以参考如下代码:
- Code: Select all
static void Main(string[] args)
{
//新建Word文档1,用于加载待复制内容的源文档
Document sourceDoc = new Document(@"E:\\示例\\测试题\\8月8日测试题\\expect.docx");
//新建Word文档2,用于加载复制内容的目标文档
Document destinationDoc = new Document();
//遍历源word文档中的所有section,并把内容复制到目标word文档
foreach (Section sec in sourceDoc.Sections)
{
destinationDoc.Sections.Add(sec.Clone());
}
//保存文档
destinationDoc.SaveToFile(@"E:\\示例\\测试题\\8月8日测试题\\result2.docx", FileFormat.Docx2016);
}
源文档截图:
输出文档截图:
Spire.Doc for .net链接如下:
https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html
如果问题仍然存在,请提供您的测试文件以帮助我们进行进一步调查,您可以将其附在此处或通过电子邮件发送给我们(support@e-iceblue.com)。非常感谢。
Sincerely,
Ula
E-iceblue support team
//新建Word文档1,用于加载待复制内容的源文档
Document sourceDoc = new Document(@"E:\论坛\论坛34356\error.docx");
//新建Word文档2,用于加载复制内容的目标文档
Document destinationDoc = new Document();
sourceDoc.CloneCompatibilityTo(destinationDoc);
sourceDoc.CloneDefaultStyleTo(destinationDoc);
sourceDoc.CloneThemesTo(destinationDoc);
sourceDoc.CloneWebSettingsTo(destinationDoc);
foreach (Section section in sourceDoc.Sections)
{
Section newSection = (Section)section.Clone();
section.CloneSectionPropertiesTo(newSection);
destinationDoc.Sections.Add(newSection);
}
destinationDoc.Sections[0].PageSetup.CharacterSpacingControl = CharacterSpacing.compressPunctuation;
destinationDoc.SaveToFile(@"E:\论坛\论坛34356\result5.docx", FileFormat.Docx2010);