首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并word文档C#

合并word文档C#
EN

Stack Overflow用户
提问于 2011-08-23 15:33:20
回答 2查看 2.3K关注 0票数 0

我正在尝试合并c#文档。我的想法是拥有一个主文档,并将其他文档附加到这个主文档中。环境在SharePoint中,因此文档库中基本上存在文档,我的代码能够找到文档没有问题。一旦我找到他们的进展,我不知道如何打开和合并他们。我一直在搜索,好像OpenXML SDK2.0是一种实现它的方法,但我一点也不熟悉这个工具,并试图看看它们是否可以用我在VisualStudio3.5中的现有工具来完成。或者使用Microsoft.Office.Interop.Word或者其他什么的。据我所知,实际文件以二进制形式存储在内容数据库中,因此物理文件实际上并不存在,所以我不能简单地用word打开它们。任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-23 16:06:14

我认为这个链接正是你想要的:

将服务器端Word文档与SharePoint 2010合并

这里有一个小小的Open,但没什么不好的。如果您认为这没有给您所需的控制,您可以查看这篇文章:

使用开放XML格式SDK2.0创建文档(第3部分)

票数 0
EN

Stack Overflow用户

发布于 2011-08-23 16:07:47

以下脚本摘自乌龟SVN,可以帮助您获得关于如何合并.doc文件的线索。如果要分发许可证,请小心。

您需要使用以下方法从C#调用脚本:

代码语言:javascript
复制
wscript.exe "C:\<path_to_the_script>\merge-doc.js" merged.doc theirs.doc mine.doc base.doc //E:javascript

这是脚本代码,仅对doc,还有其他的docx,我这里没有包括,但您可以看看安装Tortoise。

代码语言:javascript
复制
//
// TortoiseSVN Merge script for Word Doc files
//
// Copyright (C) 2004-2008 the TortoiseSVN team
// This file is distributed under the same license as TortoiseSVN
//
// Last commit by:
// $Author: tortoisesvn $
// $Date: 2008-12-05 17:38:43 +0100 (Fr, 05 Dez 2008) $
// $Rev: 14781 $
//
// Authors:
// Dan Sheridan, 2008
// Davide Orlandi and Hans-Emil Skogh, 2005
//

var objArgs,num,sTheirDoc,sMyDoc,sBaseDoc,sMergedDoc,objScript,word,baseDoc,WSHShell;

// Microsoft Office versions for Microsoft Windows OS
var vOffice2000 = 9;
var vOffice2002 = 10;
var vOffice2003 = 11;
var vOffice2007 = 12;
// WdCompareTarget
var wdCompareTargetSelected = 0;
var wdCompareTargetCurrent = 1;
var wdCompareTargetNew = 2;

objArgs = WScript.Arguments;
num = objArgs.length;
if (num < 4)
{
   WScript.Echo("Usage: [CScript | WScript] merge-doc.js merged.doc theirs.doc mine.doc base.doc");
   WScript.Quit(1);
}

sMergedDoc=objArgs(0);
sTheirDoc=objArgs(1);
sMyDoc=objArgs(2);
sBaseDoc=objArgs(3);

objScript = new ActiveXObject("Scripting.FileSystemObject")
if ( ! objScript.FileExists(sTheirDoc))
{
    WScript.Echo("File " + sTheirDoc +" does not exist.  Cannot compare the documents.", vbExclamation, "File not found");
    WScript.Quit(1);
}
if ( ! objScript.FileExists(sMergedDoc))
{
    WScript.Echo("File " + sMergedDoc +" does not exist.  Cannot compare the documents.", vbExclamation, "File not found");
    WScript.Quit(1);
}

objScript = null

try
{
    word = WScript.CreateObject("Word.Application");
}
catch(e)
{
   WScript.Echo("You must have Microsoft Word installed to perform this operation.");
   WScript.Quit(1);
}

word.visible = true

// Open the base document
baseDoc = word.Documents.Open(sTheirDoc);

// Merge into the "My" document
if (parseInt(word.Version) < vOffice2000)
{
        baseDoc.Compare(sMergedDoc);
}
else if (parseInt(word.Version) < vOffice2007)
{
        baseDoc.Compare(sMergedDoc, "Comparison", wdCompareTargetNew, true, true);
} else {
    baseDoc.Merge(sMergedDoc);
}

// Show the merge result
if (parseInt(word.Version) < 12)
{
    word.ActiveDocument.Windows(1).Visible = 1;
}

// Close the first document
if (parseInt(word.Version) >= 10)
{
   baseDoc.Close();
}

// Show usage hint message
WSHShell = WScript.CreateObject("WScript.Shell");
if(WSHShell.Popup("You have to accept or reject the changes before\nsaving the document to prevent future problems.\n\nWould you like to see a help page on how to do this?", 0, "TSVN Word Merge", 4 + 64) == 6)
{
    WSHShell.Run("http://office.microsoft.com/en-us/assistance/HP030823691033.aspx");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7163636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档