我想在不使用对象模型的情况下创建一个单词2007文档.所以我更喜欢使用开放的xml格式创建它.到目前为止,我已经能够创建该文档.现在我想在其中添加一个内容控件并将其映射到xml.任何人都可以指导我相同的???
我想在我的C#代码中设置我正在创建的word文档的一些自定义文档属性.为此,我按照这篇MSDN文章提出了这段代码:
using Word = Microsoft.Office.Interop.Word; // Version 12.0.0.0
word = new Word.Application();
word.Visible = false;
Word._Document doc = word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
logger.Info("Setting document properties");
Core.DocumentProperties properties = (Core.DocumentProperties)doc.BuiltInDocumentProperties;
properties["Codice_documento"].Value = args[3];
properties["Versione_documento"].Value = args[4];
Run Code Online (Sandbox Code Playgroud)
不幸的是,每当它到达代码时我都会收到此错误:
HRESULT:0x80004002(E_NOINTERFACE)
这是为什么?我完全按照我的MSDN描述使用接口,为什么它不起作用?
我正在使用Interop for office 2010和.net 3.5
我已经阅读了关于这个问题的多个帖子,似乎没有人对我的问题得出正确的结论.(也许我正试图看看最近是否有任何事情出现过.)
我有一个处理承诺的小型慈善应用程序.在这样做时,它需要使用和打印文档.
事实是,如果Word在后台打开,应用程序线程将挂起并且不会响应Word的关闭,我必须手动回滚并关闭单词.当然,一切正常,但我无法保证最终用户将关闭Word,即使我将指令放在用户手册中.
我对速度并不太感兴趣,但我想如果它可以增强,那将是一个不错的小奖励.
是否已为Delphi发布了允许我打开,编辑,打印和保存文档的库?如果没有,有没有办法以这样的方式使用Word Automation,它在打开时不会与Word的另一个打开句柄冲突?
我们有一个应用程序,管理员可以在其中添加内容供其下属查看.他们的要求是它应该能够以不可编辑的方式显示Word,Excel,PowerPoint和PDF文档.
我发现这样做的一个选项是将内容加载到Web浏览器组件中.其缺点是它会提示用户打开/保存/取消.我们担心的是,大多数计算机文盲的下属都难以以这种方式打开文件.
使用上述方法还意味着需要在将运行该应用程序的所有计算机上安装Microsoft Office和Adobe Acrobat(或其他启用IE的PDF查看器),这意味着需要昂贵的许可费用.
有没有更好的方法让这些内容在C#中的表单上显示?
我有一个Word文档,我想打开并用"test"替换社会安全号码的所有实例.
我已经有了打开文档的代码.这是替换的代码.但是,我在这一点上使用正则表达式时遇到了麻烦: _wordApp.Selection.Find.Text =; 在我的代码中.使用正则表达式是一种好方法还是有更好的方法?请记住,我必须匹配任何社会安全号码...因此:\ b [0-9] {3} - [0-9] {2} - [0-9] {4}\b或\ b [0-9] {3} [0-9] {2} [0-9] {4}\b
提前致谢...
object replaceAll = Werd.WdReplace.wdReplaceAll;
_wordApp.Selection.Find.ClearFormatting();
_wordApp.Selection.Find.Text = ;
_wordApp.Selection.Find.Replacement.ClearFormatting();
_wordApp.Selection.Find.Replacement.Text = "test";
_wordApp.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref replaceAll, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
Run Code Online (Sandbox Code Playgroud) 我正在c#中开发一些代码,我将与Microsoft Word进行交互.我希望能够选择重新使用现有实例,或者作为创建新实例的替代方法.
请记住,我想使用LATE BINDING完成所有这些...可以肯定地说我已经弄清楚如何在创建新实例时让事情正常工作..我只需要调用Activator.CreateInstance等.
我遇到的问题是如何重用现有实例,例如,Word已经打开,我想使用该实例.
有没有Activator.UseExistingInstance?或者类似的东西?
谢谢!
我必须实现一个Microsoft Word文档生成器,其中嵌入了excel图形.我的一个限制是使我生成的docx与Microsoft word 2010和2003 +兼容包一起工作.
我没有设法使它适用于他们两个.我可以使它适用于Word 2010,但该文档不适用于2003,反之亦然.
经过多次搜索使其适用于Word 2003后,我在我的代码中添加了这个:
private static void Word2003(ChartPart importedChartPart, MainDocumentPart mainDocumentPart, Stream fileStream)
{
var ext = new ExternalData { Id = "rel" + 5 };
importedChartPart.ChartSpace.InsertAt(ext, 3);
var fi = new FileInfo(@"generated.xlsx");
importedChartPart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/package", new Uri(fi.Name, UriKind.Relative), "rel5");
EmbeddedPackagePart embeddedObjectPart = mainDocumentPart.AddEmbeddedPackagePart(@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
Stream copyStream = new MemoryStream();
fileStream.CopyTo(copyStream);
embeddedObjectPart.FeedData(copyStream);
}
Run Code Online (Sandbox Code Playgroud)
但此时生成的文档无法与Word 2010一起使用.如果我删除这两个lignes:
var ext = new ExternalData { Id = "rel" + 5 };
importedChartPart.ChartSpace.InsertAt(ext, 3);
Run Code Online (Sandbox Code Playgroud)
从以前的代码,它适用于Word 2010,但不适用于Word 2003.
我尝试了几件事,但我没有设法让它适用于每个案例.
你可以在这里找到这一小段代码
先决条件是Excel文件的模板,其中包含图表和图形.
编辑:生成的文档始终与Microsoft …
我想通过使用列索引而不是列名来对数据表进行排序.我可以使用SQL ORDER BY 2或ORDER BY 3 DESC, 4 DESC.But来解决数据库性能问题.我希望通过使用CPU性能来实现这一点.
那么我该如何在c#中做到这一点?
例子,这对我不起作用:
sortColumn = "3 desc, 4 desc";
dt.DefaultView.Sort = sortColumn.ToString();
dt = dt.DefaultView.ToTable();
Run Code Online (Sandbox Code Playgroud) MS Office 程序保留了之前打开时导致错误的禁用文件列表。用户可以通过程序菜单访问列表并选择要重新启用的文档,从而从此列表中删除文档。( http://support.microsoft.com/kb/286017 )
问题是:如何在不与 gui 交互的情况下以编程方式完成对文档的重新启用?
我一直在尝试创建一个库来替换Word 2003文档中的MergeFields,一切正常,但是当我替换它时,我失去了应用于该字段的样式,有没有办法保留它?
这是我用来替换字段的代码:
private void FillFields2003(string template, Dictionary<string, string> values)
{
object missing = Missing.Value;
var application = new ApplicationClass();
var document = new Microsoft.Office.Interop.Word.Document();
try
{
// Open the file
foreach (Field mergeField in document.Fields)
{
if (mergeField.Type == WdFieldType.wdFieldMergeField)
{
string fieldText = mergeField.Code.Text;
string fieldName = Extensions.GetFieldName(fieldText);
if (values.ContainsKey(fieldName))
{
mergeField.Select();
application.Selection.TypeText(values[fieldName]);
}
}
}
document.Save();
}
finally
{
// Release resources
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试在选择中使用CopyFormat和PasteFormat方法,也使用get_style和set_style但不使用exent.
ms-word ×9
c# ×6
excel ×3
.net ×2
automation ×2
interop ×2
openxml-sdk ×2
vsto ×2
activator ×1
delphi ×1
late-binding ×1
mergefield ×1
ms-office ×1
office-2007 ×1
office-2010 ×1
openxml ×1
pdf ×1
performance ×1
powerpoint ×1
regex ×1