C # число в этой ячейке отформатировано как текст - PullRequest
0 голосов
/ 29 декабря 2018

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

перед сохранением данных в Excel. Таким образом, я устанавливаю формат для всего диапазона

 SLStyle standardstyle = new SLStyle();
 standardstyle.FormatCode = "#,##0.00";
 sheet.SetCellStyle("A1", "E6", standardstyle);

, но все женеудачно.Получение того же предупреждения после открытия файла xls.

Моя таблица данных содержит данные, такие как числовые данные, и немногие ячейки имеют формулу.Я хочу, чтобы оценить формулу по таблице света, если это возможно.если это невозможно, я хочу сохранить данные в файл Excel с помощью таблицы. В результате Excel оценит формулы, но в чем заключается моя ошибка, неясно, за что я получаю это предупреждение число в этой ячейке отформатировано как текст и формулы не оцениваются, поскольку числовые значения в ячейке становятся текстовыми, а не цифрами.

Я пробовал этот способ

1) сначала я заполняю таблицу данных числовыми данными и формулами, а во вторуюНа первом этапе я загружаю эту таблицу данных с помощью света таблицы и устанавливаю код формата для всего диапазона и сохраняю эти данные, чтобы добиться превосходства с помощью света таблицы.

когда я открываю файл excel, сгенерированный светом электронной таблицы, я обнаружил, что предупреждение все еще там, и формула не оценивается.формула, показывающая в качестве значения результата 0.

см. снимок экрана моей таблицы данных, в результате было бы понятно, как данные хранятся в таблице данных. Снимок экрана с таблицей данных

Первый набор кодов

            string strSum = "", strColName, strImmediateOneUp = "", strImmediateTwoUp = "";

            int startsum = 0;
            int currow = 0;
            bool firstTimeSum = true;

            int NumRows = 6;
            int NumColumns = 5;

            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();


            DataTable dt = new DataTable();

            for (int col = 0; col < NumColumns; col++)
            {
                strColName = GenerateColumnText(col);
                DataColumn datacol = new DataColumn(strColName, typeof(object));
                dt.Columns.Add(datacol);
            }


            for (int row = 0; row < NumRows; row++)
            {
                dt.Rows.Add();

                for (int col = 0; col < NumColumns; col++)
                {
                    if (row < 2)
                    {
                        dt.Rows[row][col] = Convert.ToInt32(new Random().Next(1, NumRows));
                    }
                    else
                    {
                        if (firstTimeSum)
                        {
                            if (row - currow == 2)
                            {
                                currow = row;
                                startsum = 0;
                                firstTimeSum = false;
                            }
                            else
                            {
                                startsum = 1;
                            }
                        }
                        else
                        {
                            if (row - currow == 3)
                            {
                                currow = row;
                                startsum = 0;
                            }
                        }


                        if (startsum == 0)
                        {
                            strColName = GenerateColumnText(col);
                            strImmediateOneUp = strColName + ((row + 1) - 1).ToString();
                            strImmediateTwoUp = strColName + ((row + 1) - 2).ToString();
                            strSum = string.Format("=SUM({0}:{1})", strImmediateTwoUp, strImmediateOneUp);
                            dt.Rows[row][col] = strSum;
                        }
                        else
                        {
                            dt.Rows[row][col] = Convert.ToInt32(new Random().Next(1, NumRows));
                        }
                    }

                }

                startsum = 1;
            }

Второй набор кодов

    SLThemeSettings stSettings = BuildTheme();
    SLDocument sheet = new SLDocument(stSettings);
    sheet.ImportDataTable(1, 1, dt, false);
    //standard number format
    SLStyle standardstyle = new SLStyle();
    standardstyle.FormatCode = "#,##0.00";
    sheet.SetCellStyle("A1", "E6", standardstyle);

    sheet.SaveAs("d:\\SpreadsheetLight_formula.xlsx");
    sheet.Dispose();

Мой желаемый результат - оценка формулы ипоказать правильное значение там в ячейке формулы.без сохранения данных в Excel можно ли с помощью электронных таблиц оценить формулу и показать правильное значение?если возможно, покажите мне путь, пожалуйста.

пожалуйста, посмотрите мой код и скажите, что мне нужно добавить или изменить в моем коде, так как формула результата должна быть оценена.спасибо

...