2

我现在正在使用 GemBox 电子表格来使用 C# 读取 Excel 文件。在 Excel 文件中,有一个单元格包含引用另一个 Excel 文件的日期值。

Excel 单元格公式屏幕截图

在 C# 中,起初,我得到了零值。基于GemBox 从电子表格或 Flexcel 中检索计算值的帖子,我将 Load 方法替换为XlsxOptions.PreserveMakeCopy. 替换后,我得到了一些随机值,比如 43257,而不是 Date 值。我不确定它是什么价值。

C# 调试值

这是代码片段:

public void Export()
{

    SpreadsheetInfo.SetLicense(FileExport.GemBoxLicenseKey);
    ExcelFile ef = new ExcelFile();
    FileExport file = new FileExport();
    ef.LoadXlsx(locationPath + "\\XX.xlsx", GemBox.Spreadsheet.XlsxOptions.PreserveMakeCopy);

    ExcelWorksheet ws = ef.Worksheets[0];

    try
    {
        int trackrowcount = 0;
        int columncounter = 1;
        DateTime date = DateTime.MinValue;

        foreach (ExcelRow row in ws.Rows)
        {
            trackrowcount += 1;

            if (trackrowcount < 4)
                continue;

            columncounter = 1;

            foreach (ExcelCell cell in row.AllocatedCells)
            {
                if (cell.Value != null)
                {
                    if (trackrowcount == 4 && columncounter == 2)
                    {
                        var cellFormula = cell.Formula;
                        var cellValue = cell.Value;

                        //Here is where I am trying to get the date value
                        date = Convert.ToDateTime(cellValue);
                    }
                }
                columncounter += 1;
            }
        }
        // and so on
    }
    catch (Exception ex)
    {
    }
}

有没有我错过的设置?

4

1 回答 1

1

您正在OADate以 datatype 的格式获取日期double。您必须将其转换回DateTime格式。

double dateValue = 43257;
DateTime date = DateTime.FromOADate(dateValue);
于 2018-09-18T04:21:54.273 回答