小编Ber*_*ncı的帖子

如何使用OpenXML在Word 2007文档中添加内容控件

我想在不使用对象模型的情况下创建一个单词2007文档.所以我更喜欢使用开放的xml格式创建它.到目前为止,我已经能够创建该文档.现在我想在其中添加一个内容控件并将其映射到xml.任何人都可以指导我相同的???

office-2007 ms-word openxml openxml-sdk

6
推荐指数
1
解决办法
5987
查看次数

使用Word interop设置自定义文档属性

我想在我的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

interop vsto ms-word office-addins office-2010

6
推荐指数
2
解决办法
1万
查看次数

如何在不使用COM自动化的情况下使用Word文档?

我已经阅读了关于这个问题的多个帖子,似乎没有人对我的问题得出正确的结论.(也许我正试图看看最近是否有任何事情出现过.)

我有一个处理承诺的小型慈善应用程序.在这样做时,它需要使用和打印文档.

事实是,如果Word在后台打开,应用程序线程将挂起并且不会响应Word的关闭,我必须手动回滚并关闭单词.当然,一切正常,但我无法保证最终用户将关闭Word,即使我将指令放在用户手册中.

我对速度并不太感兴趣,但我想如果它可以增强,那将是一个不错的小奖励.

是否已为Delphi发布了允许我打开,编辑,打印和保存文档的库?如果没有,有没有办法以这样的方式使用Word Automation,它在打开时不会与Word的另一个打开句柄冲突?

delphi automation ms-word

6
推荐指数
1
解决办法
5360
查看次数

如何在Windows窗体上显示office和/或pdf内容?

我们有一个应用程序,管理员可以在其中添加内容供其下属查看.他们的要求是它应该能够以不可编辑的方式显示Word,Excel,PowerPoint和PDF文档.

我发现这样做的一个选项是将内容加载到Web浏览器组件中.其缺点是它会提示用户打开/保存/取消.我们担心的是,大多数计算机文盲的下属都难以以这种方式打开文件.

使用上述方法还意味着需要在将运行该应用程序的所有计算机上安装Microsoft Office和Adobe Acrobat(或其他启用IE的PDF查看器),这意味着需要昂贵的许可费用.

有没有更好的方法让这些内容在C#中的表单上显示?

.net c# pdf excel ms-word

5
推荐指数
1
解决办法
3133
查看次数

使用MS Word中的正则表达式替换文本 - 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# regex ms-word

5
推荐指数
1
解决办法
4389
查看次数

如何使用后期绑定访问Microsoft Word现有实例

我正在c#中开发一些代码,我将与Microsoft Word进行交互.我希望能够选择重新使用现有实例,或者作为创建新实例的替代方法.

请记住,我想使用LATE BINDING完成所有这些...可以肯定地说我已经弄清楚如何在创建新实例时让事情正常工作..我只需要调用Activator.CreateInstance等.

我遇到的问题是如何重用现有实例,例如,Word已经打开,我想使用该实例.

有没有Activator.UseExistingInstance?或者类似的东西?

谢谢!

c# automation ms-word activator late-binding

5
推荐指数
2
解决办法
1万
查看次数

使用OpenXML与Word 2010和2003一起在Word文档中嵌入Excel图形

我必须实现一个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 …

c# excel ms-word openxml-sdk

5
推荐指数
1
解决办法
1794
查看次数

DataTable使用列号而不是列名进行排序

我想通过使用列索引而不是列名来对数据表进行排序.我可以使用SQL ORDER BY 2ORDER 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)

.net c# performance

5
推荐指数
1
解决办法
8110
查看次数

如何以编程方式重新启用 MS Office 禁用文件列表中的文档

MS Office 程序保留了之前打开时导致错误的禁用文件列表。用户可以通过程序菜单访问列表并选择要重新启用的文档,从而从此列表中删除文档。( http://support.microsoft.com/kb/286017 )

问题是:如何在不与 gui 交互的情况下以编程方式完成对文档的重新启用?

excel powerpoint ms-word ms-office

4
推荐指数
3
解决办法
5614
查看次数

替换Word 2003文档中的MergeFields并保留样式

我一直在尝试创建一个库来替换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.

c# interop vsto ms-word mergefield

4
推荐指数
1
解决办法
4232
查看次数