c# - Excel Interop PageSetup 重视有或没有类型转换的奇怪行为
问题描述
我通过 Excel 互操作打开一个文件并尝试读取标题并得到 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
&" &"
解决方案
推荐阅读
- android - 为什么 CardView 正在显示,但我没有看到它的项目?
- pyspark - Pyspark Sql 类型:Union[int, float]
- gitlab - 如何在与 GitLab 控制台相同的服务器上运行 GitLab 运行器
- windows - 如何使用 Powershell 更改表格中的多个标题
- swift - 快速工作区中的 GitHub 操作
- pandas - Python pandas:从两个不同的数据帧中过滤掉不匹配的对
- python - 如何使用 mysql 连接器执行 .sql 文件并将其保存在 python 的数据库中?
- javascript - 声明模块的类型
- c# - 如何将 List 类型的属性从 View 传递到 Controller 并再次返回?
- ubuntu - 在 Ubuntu 上运行的 LXC 容器会出现链接器错误(错误:ld.so)