C# Excel Interop PageSetup值有无类型转换的奇怪行为

C# Excel Interop PageSetup值有无类型转换的奇怪行为,c#,excel-2010,interop,C#,Excel 2010,Interop,我通过Excel Interop打开一个文件,尝试读取标题,发现Excel和NPOI之间存在差异 经过一番调查,这种奇怪的行为浓缩成了这个测试案例 [TestCase] public void TestWeirdExcelBehaviour() { var excel = new Microsoft.Office.Interop.Excel.Application(); // "m

我通过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
取代

通过在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         
  &"             &"        

嗯,有趣的是,我用我的英语Excel 2016试过了,但无法重现您描述的行为,对我来说,
numxt
nixt
的值是相同的。很高兴知道。因此,它可能是某种在Excel>2010中删除的遗留内容或语言相关的内容(我使用2010的德语版本)嗯,有趣的是,我用英语Excel 2016尝试了这一点,但无法重现您描述的行为,对我来说,
numxt
nixt
的值是相同的。很高兴知道。因此,它可能是某种在Excel>2010中删除的遗留内容,或者依赖于语言(我使用的是2010的德语版本)