问题描述
我通过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 (将#修改为@)