在C#中编辑后无法打开Doc文件

时间:2013-09-30 10:48:19

标签: c#

我已经编写了以下代码来编辑Word文档的书签。,因为文档是生成文档是可见的但是如果我关闭它并尝试再次打开相同的文档doc这个词会给出错误:

1.检查文件/驱动器的文件权限。 2.确保有足够的内存和磁盘空间。

private void GenerateApplication()
{
object readOnly = true;
object repair = false;
object bookMarkName = "applicantName";
object bookMarkCompany = "firmName";
object bookMarkPost = "postName";

fielName = @"C:\Documents and Settings\AllUsers\Desktop\OperateWordFromC#.dotx";


objDoc = wordApp.Documents.Open(ref fielName, ref missingValuesValues, ref readOnly,       ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref repair, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues);

objDoc.Activate();

objDoc.Bookmarks.get_Item(ref bookMarkName).Range.Text = txtApplicantName.Text;       

objDoc.Bookmarks.get_Item(ref bookMarkCompany).Range.Text = txtAppliedCompany.Text;
objDoc.Bookmarks.get_Item(ref bookMarkPost).Range.Text = txtAppliedPost.Text;

string outputFile = @"C:\Documents and Settings\All Users\Desktop\ApplicationOf-" + txtApplicantName.Text + ".docx";

bookMarkName = null;
bookMarkCompany = null;
bookMarkPost = null;

Object objSaveAsFile = outputFile;
Object objFileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument;

wordApp.ActiveDocument.SaveAs(ref objSaveAsFile, ref repair, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues,  ref missingValuesValues, ref  missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues, ref missingValuesValues); 
wordApp.Visible = true;
}

1 个答案:

答案 0 :(得分:1)

您正在打开的文档(由objDoc引用)有自己的.SaveAs方法,其中包含以下参数,详细信息位于Microsoft documentation

objDoc.SaveAs(ref objSaveAsFile, ref objFileFormat, ref objLockComments, 
    ref objPassword, ref objAddToRecentFiles, ref objWritePassword, 
    ref objReadOnlyRecommended, ref objEmbedTrueTypeFonts, 
    ref objSaveNativePictureFormat, ref objSaveFormsData,
    ref objSaveAsAOCELetter, ref objEncoding, ref objInsertLineBreaks,
    ref objAllowSubstitutions, ref objLineEnding, ref objAddBiDiMarks);

因此,以这种方式保存文档(而不是引用wordApp.ActiveDocument)。在调用SaveAs之前,您需要适当地声明和初始化上面的变量。

如果您不再需要访问该文档(使用objDoc.Close()),您也应该关闭该文档,但最迟应用程序关闭之前。

稍后重新打开新保存的文档并进行更改时,可以使用.Save()代替(不需要任何参数)。

相关问题