我正在尝试使用电子表格齿轮读取 Excel 文件的使用范围,目前我已将其设置为执行此操作:
var workbook = Factory.GetWorkbookSet().Workbooks.OpenFromStream(fileStreamInput);
var sheet = workbook.Worksheets[0];
var values = sheet.Cells[sheet.UsedRange.Address].Value;
Run Code Online (Sandbox Code Playgroud)
Excel 文件将由使用不同列格式的人上传,因此此代码需要与类型无关……日期除外。这段代码引入了 Excel 存储日期的双重表示,我不希望这样。我知道以下行会将双精度值转换为日期:
workbook.NumberToDateTime(dateAsADouble);
Run Code Online (Sandbox Code Playgroud)
但是,这假设我事先知道哪个单元格是日期格式的,而我永远不会。我希望能够values使用这种方法转换存储在其中的所有日期双精度单元格,理想情况下不需要单独循环遍历每个值,但如果没有别的,我会接受这样的答案。我以为我可以使用 Linq,但似乎 SpreadsheetGear 的IRange类不支持 Linq。
有没有办法做到这一点?也许是一种测试单元格是否为日期双精度的方法?我在 SpreadsheetGear 的 API 中没有找到类似的东西。