C # Gembox Spreadsheet - считывает значение ячейки, которое ссылается на другой файл Excel - PullRequest
0 голосов
/ 18 сентября 2018

Сейчас я работаю с электронной таблицей GemBox, чтобы читать файл Excel с использованием C #.В файле Excel есть ячейка, содержащая значение Date, которое ссылается на другой файл Excel.

The Excel Cell Formula Screenshot

В C # сначала я получил нулевое значение.На основании GemBox получения вычисленных значений из электронной таблицы или сообщения Flexcel я заменил метод Load на XlsxOptions.PreserveMakeCopy.После замены вместо даты я получил какое-то случайное значение, например 43257.Я не уверен, какое это значение.

C# debug value

Вот фрагмент кода:

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)
    {
    }
}

Есть ли какие-либо настройки, которые я пропустил?

1 Ответ

0 голосов
/ 18 сентября 2018

Вы получаете дату в формате OADate в типе данных double. Вы должны преобразовать его обратно в DateTime формат.

double dateValue = 43257;
DateTime date = DateTime.FromOADate(dateValue);
...