Не удалось вернуть значение ячейки на рабочем листе в XLWorkbook - PullRequest
0 голосов
/ 29 мая 2018

Оказывается, двум ячейкам назначены две разные даты;Ячейкам A2 и B2 я присваиваю им значения 28.03.2015 и 29.03.2015 соответственно (это из c #, чтобы было понятно).

Затем к ячейке A3 я применяю формулу.Я делаю следующее:

ws.Range("A3").FormulaR1C1 = "=SIFECHA(R[-1]C[0],R[-1]C[1],\"md\")";

Когда я пытаюсь получить доступ к значению указанной ячейки из c #, используя следующую инструкцию:

ws.Cell("A3").Value;

Я получаю исключение, кажетсячто из-за сбоя преобразования данных ...

Value = '((ClosedXML.Excel.XLCell) y) .Value' возникла исключительная ситуация типа 'System.Exception'

Код:

var Dates = new List<KeyValuePair<string, string>>()
{
    new KeyValuePair<string, string>("28/03/2015","29/03/2015"),                                   
};
XLWorkbook workbook = await Task.FromResult(Dates.ToBook());
var ws = workbook.Worksheet("Report");           
ws.Cell("A3").DataType = XLCellValues.Number; // a try failed                
ws.Range("A3").FormulaR1C1 = "=ENTERO(SIFECHA(R[-1]C[0],R[-1]C[1],\"md\"))";          
ws.Cell("A3").Select();
ws.Cell("A3").SetActive(true); //another try
ws.Columns().AdjustToContents();
var y = ws.ActiveCell.Value; //and here the code exploid

Любой вклад мог бы оказать мне большую помощь.Большое спасибо.Извините за мой английский, я говорю по-испански

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

После долгих попыток они вынуждают меня реализовать «грубую силу», используя Excel, предлагаемый Microsoft для импорта библиотеки ---> using Microsoft.Office.Interop.Excel; <--- </p>

И такой код:

    public static Application App;
    public static Workbook Wb;
    public static Worksheet Ws;
    public static object GetGetTimeElapsed(string Fecha_Inicio, string Fecha_Fin)
    {
        try
        {
            if (App == null)
            {
                App = new Application();
                Wb = App.Workbooks.Add();
                Ws = (Worksheet)Wb.Worksheets.get_Item(1);
            }               
            Ws.Cells[1, 1].Formula = "=DATEDIF(\"" + Fecha_Inicio + "\",\"" + Fecha_Fin + "\",\"MD\")";
            Ws.Cells[1, 2].Formula = "=DATEDIF(\"" + Fecha_Inicio + "\",\"" + Fecha_Fin + "\",\"YM\")";
            Ws.Cells[1, 3].Formula = "=DATEDIF(\"" + Fecha_Inicio + "\",\"" + Fecha_Fin + "\",\"Y\")";
            double DaysElapsed = Ws.Cells[1, 1].Value;
            double MonthsElapsed = Ws.Cells[1, 2].Value;
            double YearsElapsed = Ws.Cells[1, 3].Value;
            var List = new
            {
                Days = DaysElapsed,
                Months = MonthsElapsed,
                Years = YearsElapsed
            };
            return new { List.Days, List.Months, List.Years };
        }
        catch (Exception ex)
        {
            throw new BaseException(ex);
        }           
    }

Работайте отлично, спасибо за ваш вклад!

0 голосов
/ 29 мая 2018

Формулы, записанные в Excel с использованием свойства FormulaR1C1 и Formula, должны быть полностью написаны в синтаксисе английского языка США.

...