1.操作多个word文档或者模板生成新word文档。
2.网络上的一些关于多文档合并出现问题
问题如下:
(1) 生成的WORD文档 带有标注。显红色,最好去掉,也告诉我下原因。
(2) 几个文档中类似的表会自动合成有些覆盖,表的位置很难固定。using System;
using System.Collections.Generic;
using System.Text;
using Word;
using System.Reflection;
using System.IO;
using System.Diagnostics;namespace sd
{ public class WordDocumentMerger
{
private ApplicationClass objApp = null;
private Document objDocLast = null;
private Document objDocBeforeLast = null;
public WordDocumentMerger()
{ objApp = new ApplicationClass();
}
#region 打开文件
private void Open(string tempDoc)
{
object objTempDoc = tempDoc;
object objMissing = System.Reflection.Missing.Value; objDocLast = objApp.Documents.Open(
ref objTempDoc, //FileName
ref objMissing, //ConfirmVersions
ref objMissing, //ReadOnly
ref objMissing, //AddToRecentFiles
ref objMissing, //PasswordDocument
ref objMissing, //PasswordTemplate
ref objMissing, //Revert
ref objMissing, //WritePasswordDocument
ref objMissing, //WritePasswordTemplate
ref objMissing, //Format
ref objMissing, //Enconding
ref objMissing, //Visible
ref objMissing, //OpenAndRepair
ref objMissing, //DocumentDirection
ref objMissing, //NoEncodingDialog
ref objMissing //XMLTransform
); objDocLast.Activate();
}
#endregion #region 保存文件到输出模板
private void SaveAs(string outDoc)
{
object objMissing = System.Reflection.Missing.Value;
object objOutDoc = outDoc;
objDocLast.SaveAs(
ref objOutDoc, //FileName
ref objMissing, //FileFormat
ref objMissing, //LockComments
ref objMissing, //PassWord
ref objMissing, //AddToRecentFiles
ref objMissing, //WritePassword
ref objMissing, //ReadOnlyRecommended
ref objMissing, //EmbedTrueTypeFonts
ref objMissing, //SaveNativePictureFormat
ref objMissing, //SaveFormsData
ref objMissing, //SaveAsAOCELetter,
ref objMissing, //Encoding
ref objMissing, //InsertLineBreaks
ref objMissing, //AllowSubstitutions
ref objMissing, //LineEnding
ref objMissing //AddBiDiMarks
);
}
#endregion #region 循环合并多个文件(复制合并重复的文件)
///
/// 循环合并多个文件(复制合并重复的文件)
///
/// 模板文件
/// 需要合并的文件
/// 合并后的输出文件
public void CopyMerge(string tempDoc, string[] arrCopies, string outDoc)
{
object objMissing = Missing.Value;
object objFalse = false;
object objTarget = WdMergeTarget.wdMergeTargetSelected;
object objUseFormatFrom = WdUseFormattingFrom.wdFormattingFromSelected;
try
{
//打开模板文件
Open(tempDoc);
foreach (string strCopy in arrCopies)
{
objDocLast.Merge(
strCopy, //FileName
ref objTarget, //MergeTarget
ref objMissing, //DetectFormatChanges
ref objUseFormatFrom, //UseFormattingFrom
ref objMissing //AddToRecentFiles
);
objDocBeforeLast = objDocLast;
objDocLast = objApp.ActiveDocument;
if (objDocBeforeLast != null)
{
objDocBeforeLast.Close(
ref objFalse, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RouteDocument
);
}
}
//保存到输出文件
SaveAs(outDoc);
foreach (Document objDocument in objApp.Documents)
{
objDocument.Close(
ref objFalse, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RouteDocument
);
}
}
finally
{
objApp.Quit(
ref objMissing, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RoutDocument
);
objApp = null;
}
}
/////
///// 循环合并多个文件(复制合并重复的文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void CopyMerge(string tempDoc, string strCopyFolder, string outDoc)
//{
// string[] arrFiles = Directory.GetFiles(strCopyFolder);
// CopyMerge(tempDoc, arrFiles, outDoc);
//}
#endregion //#region 循环合并多个文件(插入合并文件)
/////
///// 循环合并多个文件(插入合并文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void InsertMerge(string tempDoc, string[] arrCopies, string outDoc)
//{
// object objMissing = Missing.Value;
// object objFalse = false;
// object confirmConversion = false;
// object link = false;
// object attachment = false;
// try
// {
// //打开模板文件
// Open(tempDoc);
// foreach (string strCopy in arrCopies)
// {
// objApp.Selection.InsertFile(
// strCopy,
// ref objMissing,
// ref confirmConversion,
// ref link,
// ref attachment
// );
// }
// //保存到输出文件
// SaveAs(outDoc);
// foreach (Document objDocument in objApp.Documents)
// {
// objDocument.Close(
// ref objFalse, //SaveChanges
// ref objMissing, //OriginalFormat
// ref objMissing //RouteDocument
// );
// }
// }
// finally
// {
// objApp.Quit(
// ref objMissing, //SaveChanges
// ref objMissing, //OriginalFormat
// ref objMissing //RoutDocument
// );
// objApp = null;
// }
//}
/////
///// 循环合并多个文件(插入合并文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc)
//{
// string[] arrFiles = Directory.GetFiles(strCopyFolder);
// InsertMerge(tempDoc, arrFiles, outDoc);
//}
//#endregion
}
}
2.网络上的一些关于多文档合并出现问题
问题如下:
(1) 生成的WORD文档 带有标注。显红色,最好去掉,也告诉我下原因。
(2) 几个文档中类似的表会自动合成有些覆盖,表的位置很难固定。using System;
using System.Collections.Generic;
using System.Text;
using Word;
using System.Reflection;
using System.IO;
using System.Diagnostics;namespace sd
{ public class WordDocumentMerger
{
private ApplicationClass objApp = null;
private Document objDocLast = null;
private Document objDocBeforeLast = null;
public WordDocumentMerger()
{ objApp = new ApplicationClass();
}
#region 打开文件
private void Open(string tempDoc)
{
object objTempDoc = tempDoc;
object objMissing = System.Reflection.Missing.Value; objDocLast = objApp.Documents.Open(
ref objTempDoc, //FileName
ref objMissing, //ConfirmVersions
ref objMissing, //ReadOnly
ref objMissing, //AddToRecentFiles
ref objMissing, //PasswordDocument
ref objMissing, //PasswordTemplate
ref objMissing, //Revert
ref objMissing, //WritePasswordDocument
ref objMissing, //WritePasswordTemplate
ref objMissing, //Format
ref objMissing, //Enconding
ref objMissing, //Visible
ref objMissing, //OpenAndRepair
ref objMissing, //DocumentDirection
ref objMissing, //NoEncodingDialog
ref objMissing //XMLTransform
); objDocLast.Activate();
}
#endregion #region 保存文件到输出模板
private void SaveAs(string outDoc)
{
object objMissing = System.Reflection.Missing.Value;
object objOutDoc = outDoc;
objDocLast.SaveAs(
ref objOutDoc, //FileName
ref objMissing, //FileFormat
ref objMissing, //LockComments
ref objMissing, //PassWord
ref objMissing, //AddToRecentFiles
ref objMissing, //WritePassword
ref objMissing, //ReadOnlyRecommended
ref objMissing, //EmbedTrueTypeFonts
ref objMissing, //SaveNativePictureFormat
ref objMissing, //SaveFormsData
ref objMissing, //SaveAsAOCELetter,
ref objMissing, //Encoding
ref objMissing, //InsertLineBreaks
ref objMissing, //AllowSubstitutions
ref objMissing, //LineEnding
ref objMissing //AddBiDiMarks
);
}
#endregion #region 循环合并多个文件(复制合并重复的文件)
///
/// 循环合并多个文件(复制合并重复的文件)
///
/// 模板文件
/// 需要合并的文件
/// 合并后的输出文件
public void CopyMerge(string tempDoc, string[] arrCopies, string outDoc)
{
object objMissing = Missing.Value;
object objFalse = false;
object objTarget = WdMergeTarget.wdMergeTargetSelected;
object objUseFormatFrom = WdUseFormattingFrom.wdFormattingFromSelected;
try
{
//打开模板文件
Open(tempDoc);
foreach (string strCopy in arrCopies)
{
objDocLast.Merge(
strCopy, //FileName
ref objTarget, //MergeTarget
ref objMissing, //DetectFormatChanges
ref objUseFormatFrom, //UseFormattingFrom
ref objMissing //AddToRecentFiles
);
objDocBeforeLast = objDocLast;
objDocLast = objApp.ActiveDocument;
if (objDocBeforeLast != null)
{
objDocBeforeLast.Close(
ref objFalse, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RouteDocument
);
}
}
//保存到输出文件
SaveAs(outDoc);
foreach (Document objDocument in objApp.Documents)
{
objDocument.Close(
ref objFalse, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RouteDocument
);
}
}
finally
{
objApp.Quit(
ref objMissing, //SaveChanges
ref objMissing, //OriginalFormat
ref objMissing //RoutDocument
);
objApp = null;
}
}
/////
///// 循环合并多个文件(复制合并重复的文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void CopyMerge(string tempDoc, string strCopyFolder, string outDoc)
//{
// string[] arrFiles = Directory.GetFiles(strCopyFolder);
// CopyMerge(tempDoc, arrFiles, outDoc);
//}
#endregion //#region 循环合并多个文件(插入合并文件)
/////
///// 循环合并多个文件(插入合并文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void InsertMerge(string tempDoc, string[] arrCopies, string outDoc)
//{
// object objMissing = Missing.Value;
// object objFalse = false;
// object confirmConversion = false;
// object link = false;
// object attachment = false;
// try
// {
// //打开模板文件
// Open(tempDoc);
// foreach (string strCopy in arrCopies)
// {
// objApp.Selection.InsertFile(
// strCopy,
// ref objMissing,
// ref confirmConversion,
// ref link,
// ref attachment
// );
// }
// //保存到输出文件
// SaveAs(outDoc);
// foreach (Document objDocument in objApp.Documents)
// {
// objDocument.Close(
// ref objFalse, //SaveChanges
// ref objMissing, //OriginalFormat
// ref objMissing //RouteDocument
// );
// }
// }
// finally
// {
// objApp.Quit(
// ref objMissing, //SaveChanges
// ref objMissing, //OriginalFormat
// ref objMissing //RoutDocument
// );
// objApp = null;
// }
//}
/////
///// 循环合并多个文件(插入合并文件)
/////
///// 模板文件
///// 需要合并的文件
///// 合并后的输出文件
//public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc)
//{
// string[] arrFiles = Directory.GetFiles(strCopyFolder);
// InsertMerge(tempDoc, arrFiles, outDoc);
//}
//#endregion
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货