使用 VLOOKUP 公式的 ClosedXML 读取行
ClosedXML read row with VLOOKUP formula
我目前正在从事一个使用 closedXML 从 excel 读取数据的项目,但我的代码有错误,因为 excel 单元格中有 vlookup 公式。有没有办法让 closedxml 使用 vlookup 公式读取行值?谢谢!
这是我得到 "Syntax Error" 错误的地方:
if (rowValue.Cell(colnum).HasFormula)
{
((IDictionary<String, Object>)item)[field] = rowValue.Cell(colnum).Value.ToString();
}
ClosedXML 不支持 VLOOKUP
和 HLOOKUP
公式。如果您需要它们,您必须通过读取单元格范围并搜索具有给定值的行或列来手动实现它们。
正如 Raidri 提到的那样,VLOOKUPS 在 Closed XML 中不受支持。
在已关闭的xml 代码库论坛上查看此讨论,了解已关闭 xml
中 VLOOKUP 支持的更新
https://closedxml.codeplex.com/discussions/569497
建议的解决方法是为您的模板文件编写一个 VBA 宏以挂接到保存前事件,并将特殊值粘贴到隐藏的工作表中,然后从那里上传。请参阅这些链接以了解如何执行此操作。
在 VBA - How to remove formulas from sheet but keep their calculated values 中以编程方式粘贴特殊值
连接到之前的保存事件 - http://www.mrexcel.com/forum/excel-questions/374035-visual-basic-applications-save-event.html
http://github.com/ClosedXML/ClosedXML 的 develop
分支现在支持 VLOOKUP
和 HLOOKUP
。
刚刚发现 ValueCached 给出了正确的文本。 (ClosedXML_v0.76.0.0)
IXLCell JobCell = row.Cells().Where(item => item.Address.ColumnLetter == "B").FirstOrDefault(); }
string Job = JobCell.RichText.Text;
if (string.IsNullOrEmpty(Job))
{
Job = JobCell.ValueCached;
}
我目前正在从事一个使用 closedXML 从 excel 读取数据的项目,但我的代码有错误,因为 excel 单元格中有 vlookup 公式。有没有办法让 closedxml 使用 vlookup 公式读取行值?谢谢!
这是我得到 "Syntax Error" 错误的地方:
if (rowValue.Cell(colnum).HasFormula)
{
((IDictionary<String, Object>)item)[field] = rowValue.Cell(colnum).Value.ToString();
}
ClosedXML 不支持 VLOOKUP
和 HLOOKUP
公式。如果您需要它们,您必须通过读取单元格范围并搜索具有给定值的行或列来手动实现它们。
正如 Raidri 提到的那样,VLOOKUPS 在 Closed XML 中不受支持。
在已关闭的xml 代码库论坛上查看此讨论,了解已关闭 xml
中 VLOOKUP 支持的更新https://closedxml.codeplex.com/discussions/569497
建议的解决方法是为您的模板文件编写一个 VBA 宏以挂接到保存前事件,并将特殊值粘贴到隐藏的工作表中,然后从那里上传。请参阅这些链接以了解如何执行此操作。
在 VBA - How to remove formulas from sheet but keep their calculated values 中以编程方式粘贴特殊值 连接到之前的保存事件 - http://www.mrexcel.com/forum/excel-questions/374035-visual-basic-applications-save-event.html
http://github.com/ClosedXML/ClosedXML 的 develop
分支现在支持 VLOOKUP
和 HLOOKUP
。
刚刚发现 ValueCached 给出了正确的文本。 (ClosedXML_v0.76.0.0)
IXLCell JobCell = row.Cells().Where(item => item.Address.ColumnLetter == "B").FirstOrDefault(); }
string Job = JobCell.RichText.Text;
if (string.IsNullOrEmpty(Job))
{
Job = JobCell.ValueCached;
}