Excel Interop PageSetup会在有或没有类型转换的情况下得出奇怪的行为

问题描述

我通过Excel Interop打开一个文件,尝试读取标题,并发现Excel和NPOI之间存在差异 经过一番调查,奇怪的行为浓缩到了这个测试用例中

        [TestCase]
        public void TestWeirdExcelBehavIoUr()
        {
            var excel = new Microsoft.Office.Interop.Excel.Application();     
            // "mocking" a document with a heading
            excel.Workbooks.Add();
            excel.ActiveSheet.PageSetup.CenterHeader = "&Theading";

            var nuxt =              excel.Sheets[1] .PageSetup.CenterHeader;    //&Theading
            var nixt = ((Worksheet) excel.Sheets[1]).PageSetup.CenterHeader;    //&Uheading

            Assert.AreEqual(nuxt,nixt); // nope they are not equal
        }

区别在于&T仅由类型转换为&U的方式被Worksheet取代

根据NPOI的测试,我认为带有&U的版本是正确的版本。

基本问题是为什么会这样?还有其他类似功能,Interop中的类型转换在其中有很大的不同吗?

我正在使用Excel 2010和“ Microsoft.Office.Interop.Excel \ 15.0.4795.1000”

编辑:进一步压缩测试用例以删除特定于语言的内容

Edit2:我使用的占位符的映射表

  Without cast   With cast  
 -------------- ----------- 
  &T             &U         
  &S             &P         
  &A             &N         
  &B             &A         
  &X             &X         
  &8             &8         
  &16            &16        
  &22            &22        
  &6             &6         
  &9             &9         
  &MFF0000       &KFF0000   
  &D             &D         
  &N             &F         
  &"             &"        

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)