首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不带空格的字符计数

不带空格的字符计数
EN

Stack Overflow用户
提问于 2015-10-29 16:04:16
回答 2查看 1.1K关注 0票数 0

我正在用C#编写一个Office外接程序.我正试图从带有的Word文档中获取没有空格的字符的数量。但是,到long的转换不起作用。

错误信息是:

"System._ComObject“类型的COM对象不能转换为"System.IConvertible”

到目前为止,下面是我的thisAddIn.cs代码片段:

代码语言:javascript
运行
复制
using Word = Microsoft.Office.Interop.Word;
// ...
public partial class ThisAddIn
{
  public void Calc()
  {
    Word.Document doc = this.Application.ActiveDocument ;
    long c=doc.BuiltInDocumentProperties[Word.WdBuiltInProperty.wdPropertyCharacters];
    // ^^^ Error ^^^
  }
}

问题:

  1. 如何正确地进行转换?

和/或

  1. 有没有另一种方法可以获得没有空格的字符的数量?
EN

回答 2

Stack Overflow用户

发布于 2015-10-29 16:20:51

不要使用BuiltInDocumentProperties,而是使用具有Count属性的Characters

long c = doc.Characters.Count;

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.characters.count.aspx

编辑(来自VBA example):

代码语言:javascript
运行
复制
Sub CountChars()
    Dim iCount(57) As Integer
    Dim x As Integer
    Dim iTotal As Integer
    Dim iAsc As Integer

    Application.ScreenUpdating = False
    iTotal = ActiveDocument.Range.Characters.Count

    For x = 1 To iTotal
        iAsc = Asc(ActiveDocument.Range.Characters(x))
        If iAsc >= 65 And iAsc <= 122 Then
        iCount(iAsc - 65) = iCount(iAsc - 65) + 1
        End If
    Next x
    For x = 0 To 57
        Debug.Print x, iCount(x)
    Next x
    Application.ScreenUpdating = True
End Sub
票数 0
EN

Stack Overflow用户

发布于 2018-10-26 15:57:32

代码语言:javascript
运行
复制
int c = doc.BuiltInDocumentProperties[Word.WdBuiltInProperty.wdPropertyCharacters].Value;

BuiltInDocumentProperties[]的结果是Office.DocumentProperty (可以通过检查Word VBA编辑器中的局部变量窗口找到),它的默认.Value属性包含数字。

它在VBA中不使用.Value,因为VBA具有不同的默认值赋值(Let),以及与Set分离的对象引用赋值。另外,VBA中的Long类型是.NET中的Int32类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33419199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档