C# Excel Interop PageSetup值有无类型转换的奇怪行为
我通过Excel Interop打开一个文件,尝试读取标题,发现Excel和NPOI之间存在差异 经过一番调查,这种奇怪的行为浓缩成了这个测试案例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
[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的德语版本)