我有一个带有表格tblPhoneCode
和两列Country
的Excel 文件Code
,并且我有一个带有列表数据验证的单元格 B1 指向该Country
列
和一个单元格 B2 基本上它显示Code
选定的Country
.
单元格 B2 使用以下公式
OFFSET(INDIRECT("tblPhoneCode[#Headers]"),MATCH(B1,INDIRECT("tblPhoneCode[Country]"),0),1,1,1)
Excel 中的所有内容都可以正常工作,但问题是当我在 C# 中使用 EPPlus 读取 B2 的值时,我得到#VALUE!
的不是实际的 Phone Code
。我已经尝试.Calculate()
从工作簿、工作表到单元格并尝试访问该值仍然相同。我已经附加了记录器,它变成了空的,并且没有记录错误。
C# 代码
static void Main(string[] args)
{
var excelFile = new FileInfo(@"C:\Users\Ash\Desktop\Epplus.xlsx");
using (var package = new ExcelPackage(excelFile))
{
// Output from the logger will be written to the following file
var logfile = new FileInfo(@"C:\Users\Ash\Desktop\EpplusLogFile.txt");
// Attach the logger before the calculation is performed.
package.Workbook.FormulaParserManager.AttachLogger(logfile);
// Calculate - can also be executed on sheet- or range level.
package.Workbook.Calculate();
Debug.Print(String.Format("Country: \t{0}", package.Workbook.Worksheets[1].Cells["B1"].Value));
Debug.Print(String.Format("Phone Code:\t{0}", package.Workbook.Worksheets[1].Cells["B2"].Value));
// The following method removes any logger attached to the workbook.
package.Workbook.FormulaParserManager.DetachLogger();
}
}
输出:
Country: US
Phone Code: #VALUE!
非常感谢任何帮助或见解,我正在使用 MS Excel 2010、.NET 4.0、EPPlus 4.1.0 和 Windows 10 64bit