- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里看到了其他一些有解决方案的问题,但是即使直接转换和垃圾收集也不会消除歧义警告或停止我的程序尝试使用显然已经在使用的文档。
以下代码是完全 reshape 某些 Word 文档(更改标题、模板和 Logo 等)的应用程序的一部分。 MergeDocument
不会处理单词应用程序或文档(其他方法也需要访问的模板文件)。
WaitForIt
方法只是一个两秒的计时器延迟,希望它是关于访问模板文件的计时问题。大多数其他方法在 GrabLogoFromTemplate
中的 try/catch
尝试使用与 MergeDocument 相同的模板时被命中之前没有机会做任何事情
已经用过了。
不幸的是,我现在不知道如何解决这个问题,标题中提到的直接转换并没有纠正我认为是 Introp Word Application 和 Document Close 和相当的方法。同报道in this question , 和 here我尝试了后者提到的垃圾收集的解决方案,但它并没有解决我的问题。 Close() 和 Quit() 都是模棱两可的,就像第一个问题中的问题一样,但即使处置(认为我已经正确地做到了这一点)也不会释放模板供其他方法使用。
有没有人遇到过这个?
合并按钮:
private void Merge_btn_Click(object sender, EventArgs e)
{
Rebrand rb = new Rebrand();
progressBar1.Increment(+1);
rb.FolderCreation();
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
progressBar1.Increment(+24);
string[] fileArray = Directory.GetFiles(currentFolder_tb.Text);
for (int i=0; i < fileArray.Length; i++)
{
string tmpTemplate = rb.GetTempTemplateLocationn(template_tb.Text,i);
string newDocumentPath = rb.MergeDocument(fileArray[i], newLocation_tb.Text, tmpTemplate, wordApp);
// ambiguous
foreach(Word.Document d in wordApp.Documents)
{
d.Close(ref missing, ref missing, ref missing);
}
rb.WaitForIt();
rb.GrabLogoFromTemplate(tmpTemplate);
rb.WaitForIt();
if (newDocumentPath != "false")
rb.ReplaceImageInHeader(newDocumentPath);
}
object missing = System.Reflection.Missing.Value;
((Microsoft.Office.Interop.Word.Application)wordApp).Quit(ref missing, ref missing, ref missing);
// the above has ambiguity warning
GC.Collect();// doesn't solve
if (progressBar1.Value == 99)
progressBar1.Increment(+1);
MessageBox.Show("File(s) ReBranded!");
progressBar1.Value = 0;
}
合并文档:
public string MergeDocument(string oldDoc, string newDoc, string tmplt, Microsoft.Office.Interop.Word.Application wordApp)
{
try
{
object missing = System.Reflection.Missing.Value;
//Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document aDoc = null;
object readOnly = false;
object isVisible = false;
wordApp.Visible = false;
object oldfile = oldDoc;
// keep the old document's filename
object newfile = newDoc + @"\" + Path.GetFileName(oldDoc);
object template = tmplt;
// add new template
aDoc = wordApp.Documents.Add(ref template, ref missing, ref missing, ref missing);
// open existing document you wish to merge
aDoc = wordApp.Documents.Open(ref oldfile, ref missing, ref readOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible,
ref missing, ref missing, ref missing, ref missing);
aDoc.Activate();
aDoc.set_AttachedTemplate(template);
aDoc.UpdateStyles();
aDoc.SaveAs(ref newfile, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
// close the document, ambiguity warning
((Microsoft.Office.Interop.Word.Document)aDoc).Close(ref missing, ref missing, ref missing);
return newfile.ToString();
}
catch
{
return "false";
}
}
最佳答案
我在批处理 PowerPoint 幻灯片时遇到了问题。唯一的解决办法是关闭
,退出
然后运行GC
两次!
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
关于直接转换后 C# Interop.Word.Application/Document 歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34922845/
虽然我正在运行以测试此 thread 中的一些代码我发现了一件奇怪的事情,如果你考虑下面的程序 import java.util.ArrayList; import java.util.List; p
我只是很好奇为什么使用 using 指令以这种方式设计它。对于 1) struct 被视为命名空间,对于 2) 它不是: struct foo { using type0 = int; }; na
我需要在 ANTLR 中匹配一条消息,该消息包含由/分隔的 2 个字段第一个字段可以有 1..3 数字,第二个字段可以有 1..2 数字, 这不起作用 msg: f1 '/' f2; f1: DIGI
我想定义一个带有 x, y, z 坐标的 3D 矢量。可以使用(+)运算符添加向量,并可以使用length函数计算长度 如果我想编译它,我会收到以下错误: It could refer to eith
所以,今天我一直在测试 Java 的重载技术,但遇到了我无法解释的歧义。基本上,当存在带有原语及其相应包装器的可变参数方法时,编译器会提示并且无法决定选择哪一个,我不明白为什么?人类很容易决定而不是编
发现: Ambiguity while overloading the cast operator 和 C++ Operator Ambiguity 没有帮助 情况: 在容器类的内部我有: opera
我正在使用以下 XPath 片段 ancestor::contribution[1]/preceding-sibling::contribution[@speaker-reference][1] 我的
在尝试依赖可变参数模板实现一些事情时,我偶然发现了一些我无法解释的事情。我将问题归结为以下代码片段: template struct A {}; template class Z, typenam
我最近对 LALR 的研究足以写一篇 LALR generator ,并且我正在尝试为其构造一个 java 或 c# 风格的语法(其开头指定为 here )。 我知道编写解析器生成器需要额外的努力
在阅读 wikipedia article关于修订控制的文章,我发现了一些似乎定义不明确的术语,并且想知道它们是如何在现实世界中实际使用/应用的。具体来说: “主线”与“基线” “分支”与“流” “结
我有以下代码: class A{ public void print(A a){ System.out.println("A 1"); } } class B exte
考虑我试过的以下查询,有两个表,Orders 和 Customers,每个表都有列名称 CustomerID,当我尝试显示两个 CustomerID 时,只有一列显示,我不明白为什么会这样,或者我是理
我正在为基本汇编语言编写一个简单的组合词法分析器/解析器。我的问题是,在解析操作码时,我需要解析一些十六进制,它是指令计数器,可能是立即值等,以及实际的操作码。 基本上,当解析像 add 这样的东西时
我正在尝试在 mysql 中跨两个不同的数据库进行标题搜索,以匹配来自不同来源的数据。在 db1 或 db2 中,标题有时会在一个数据库中以“第一个标题”开头,而在另一个数据库中则以“第一个标题”开头
我对 token 级别的歧义有疑问。 问题看起来是这样的。我的代码看起来像这样,因此标记 t_UN1 具有更高的优先级。 t_ignore = ' \t\v\r' # whitespace ....
在 Main() 的最后一行,我在尝试执行指针操作时遇到错误,但我实际上想做的是调用我在 Foo 类中定义的乘法运算符。如果这不是调用乘法的语法,那是什么? namespace test {
在此page它说: The "00" specifier causes the value to be rounded to the nearest digit preceding the decim
我正在使用 C++ Builder 并使用 TDateTime 数据类型创建 GUI 应用程序。 当我在 TDateTime 对象上使用 MonthOf() 方法时,我得到的值比 TDateTime
$7.3.3/14 (C++03) struct A { int x(); }; struct B : A { }; struct C : A { using A::x; int x(in
我一直在开发一种适配器类,当我在 clang 下遇到问题。当定义了左值引用和右值引用的转换运算符时,您会在尝试从您的类中移出时遇到歧义编译错误(当这样的代码应该没问题时,如 operator cons
我是一名优秀的程序员,十分优秀!