我正在使用 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的情况下,电子表格灯可以评估公式并显示正确的值吗?如果可能的话,请给我指路。
请查看我的代码,并告诉我我需要在代码中添加或更改的内容,以便评估结果公式。谢谢