我有一个非常特殊的问题。我寻找与我类似的问题,测试了很多人提出的解决方案,但没有一个是我需要的。
我的客户需要以 excel 格式导出数据表。这些数据可以进行排序、修改、重新排列,可以输入新值,有些行可能会消失,有些行可以取而代之,总之,这些数据可能发生任何事情。例如,假设我们导出杂货清单中显示的项目列表。
ItemID ItemName Price
Fr01 Apple 2.5
Fr02 Orange 4.0
Mt01 Beef 10.0
Mt02 Pork 8.33
Vg01 Carrot 1.25
我的问题是,这些数据可以重新导入到最初创建 excel 的软件中,以根据“ItemID”在数据库中更新(或添加)这些值。如果数据在值、类型和相互关系方面“正确”,我已经进行了验证。
我试图给范围命名。问题是当数据被过滤/排序时,名称不跟随内容,它静止在同一位置
original :(范围名称是范围的名称,而不是实际的列)
ItemID ItemName Price || Range Name
Fr01 Apple 2.5 || data_fr01
Fr02 Orange 4.0 || data_fr02
Mt01 Beef 10.0 || data_mt01
Mt02 Pork 8.33 || data_tm02
Vg01 Carrot 1.25 || data_vg01
对 ItemName 排序后:
ItemID ItemName Price || Range Name
Fr01 Apple 2.5 || data_fr01
Mt01 Beef 10.0 || data_fr02
Vg01 Carrot 1.25 || data_mt01
Mt02 Pork 8.33 || data_tm02
Fr02 Orange 4.0 || data_vg01
正如您所看到的,所有信息都正确跟随,除了范围名称,所以,当我尝试导入时,我得到了很多数据不匹配。
我的另一个尝试是使 NameRange 成为 excel 中的实际单元格。使用这种方法,单元格跟随,但可以更改,所以我尝试创建一个受保护的单元格。遗憾的是,因此无法插入或删除行。我找到了一种解决方法,即在蒙版表中包含名称,但我需要再次同步表,由于前面提到的相同原因,这是不可靠的。
更糟糕的是,我必须同时支持 xls (97-2003) 和 xlsx。
所以我正在寻找一种稳定的解决方法,它允许我以某种方式将我的“范围名称”数据存储在单元格中,使其对 Excel 用户不可见,但会跟随数据,以便我可以在重新时在正确的位置检索它- 导入数据。
提前致谢。
编辑 :
在结局中,我必须能够从 C# 应用程序中编写此属性,然后用 C# 读回相同的属性,并且它必须与 excel 文件格式兼容,excel 用户无法查看或编辑,但要保持其原始值集,无论如何发生在工作表中的数据除了删除(我不介意我只是把它放在我写 Apple 的单元格上,而不是整个范围)