C# число в этой ячейке отформатировано как текст

Я использую C# и электронную таблицу для экспорта данных, чтобы превзойти. мой код работает, но когда я открываю файл 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 можно ли с помощью электронных таблиц оценить формулу и показать правильное значение? если возможно покажи мне путь пожалуйста.

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

0 ответов

Другие вопросы по тегам