C#此单元格中的数字格式为文本

时间:2018-12-29 17:37:08

标签: c# excel spreadsheetlight

我正在使用 C#和电子表格灯将数据表数据导出到excel。我的代码正常工作,但是当我打开excel文件时,我发现大多数单元格值都显示此警告。警告消息为此单元格中的数字格式为文本

在将数据保存到excel之前,我以这种方式设置了整个范围的格式

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

但仍然没有运气。在打开xls文件后收到相同的警告。

我的数据表具有数字数据之类的数据,并且很少有单元格具有公式。我想尽可能通过电子表格评估公式。如果不可能,那么我想通过电子表格将数据保存到excel文件中,因此excel将对公式进行评估,但是不清楚我为谁收到的警告是什么该单元格中的数字格式为文本< / strong>,并且公式未进行评估,因为单元格中的数值变为文本而不是数字。

我已经尝试过这种方式

1)首先,我用数字数据和公式填充数据表,然后在第二阶段中,通过电子表格显示该数据表并设置整个范围的格式代码,然后通过电子表格显示该数据保存为excel。

当我打开由电子表格灯生成的excel文件时,我发现警告仍然存在,并且未评估公式。公式将结果显示为0。

查看我的数据表的屏幕截图,结果很清楚数据是如何存储在数据表中的。 Data table screen shot

第一组代码

            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 个答案:

没有答案