none
请教,如何使一个Cell里面的文字存在多个字体大小? RRS feed

  • 问题

  • 大家好,有一个问题请教。

    现在的应用中,需要在一个Cell里面同时存放中文(比如宋体)和藏文(Microsoft Himalaya字体),由于两种字体不能使用同一个大小,比如说中文用宋体11号字就很正常了,而Himalaya字体用11号的话打印出来根本看不清,需要用24号差不多,但是这两种字放同一个Cell后,Excel是针对一个Cell来设置格式的,这样就导致两种字体不能达到最好的效果,如果点进去把Himalaya字体的文字选中并单独设置大小,是不会影响到中文字的,也能达到需要的效果,但是每次这么调整用起来太麻烦,因为要操作的数据量还是很大。

    所以针对这种情况,我想既然手动可以调整达到效果,能不能通过程序来处理一下,现在想用C#写一个,基本的实现原理是监控用户的Ctrl+V事件,因为实际用时都是从别的地方拷贝藏文过来追加到一个Cell里面,但是在监控到事件并且得到了剪贴板的文字后不知道要怎么修改这些字符的格式,因为程序里面指定格式也是针对Cell的,最后肯定就是前面那种一大一小的效果肯定不行,需要让一个Cell里面的中文用11号大小,藏文用24号大小。

    所以请教大家能不能指点一下实现的方法或思路,先谢谢了。

    2013年4月28日 7:50

答案

  • 嗯 ,找到解决办法了,改某些字的字体等样式:

    Excel.Characters chars = activeCells.get_Characters(markSidx + 1, markEidx - markSidx);
    chars.Font.Name = "Microsoft Himalaya";
    chars.Font.FontStyle = "Regular";
    chars.Font.Size = 24;

    另外,get_Characters的第一个参数要加1,是因为它取字符是从1开始的,而一般数组是从0开始。

    • 已标记为答案 Yuanuo Shi 2013年4月28日 9:52
    2013年4月28日 9:50

全部回复

  • 嗯 ,找到解决办法了,改某些字的字体等样式:

    Excel.Characters chars = activeCells.get_Characters(markSidx + 1, markEidx - markSidx);
    chars.Font.Name = "Microsoft Himalaya";
    chars.Font.FontStyle = "Regular";
    chars.Font.Size = 24;

    另外,get_Characters的第一个参数要加1,是因为它取字符是从1开始的,而一般数组是从0开始。

    • 已标记为答案 Yuanuo Shi 2013年4月28日 9:52
    2013年4月28日 9:50
  • Hi A Fei,

      欢迎你来到MSDN 中文论坛。

      感谢你提供解决方法给所有的论坛成员,希望你下次能够继续参与我们当中来。

     


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us

    2013年4月29日 4:28
    版主