如何在VSTO中关闭Excel自动格式化

时间:2013-09-04 21:37:37

标签: c# excel vsto

我正在使用C#开发Excel VSTO项目。 Excel会将“SEP-1”之类的代码自动格式化为日期,这不是应该发生的事情。有没有办法在代码中的电子表格上关闭此功能?谢谢!

2 个答案:

答案 0 :(得分:0)

虽然似乎没有办法将其关闭,但我找到的最佳解决方案是将单元格的NumberFormat设置为Text以防止Excel自动格式化它。

答案 1 :(得分:0)

您可以使用单引号为文本值添加前缀。

以下代码片段作为伪代码提供,以了解如何在c#中完成。

Excel.Range vsto_cell = vsto_worksheet.Cells[row_index + 1, col_index + 1];

if( ( ssg_cell.NumberFormatType == SpreadsheetGear.NumberFormatType.Date )
   || ( ssg_cell.NumberFormatType == SpreadsheetGear.NumberFormatType.DateTime )
   || ( ssg_cell.NumberFormatType == SpreadsheetGear.NumberFormatType.Time ) )
{
   vsto_cell.Value2 = ssg_cell.Text; //date should be recognized by Excel as a date
}
else if( ssg_cell.ValueType == SpreadsheetGear.ValueType.Text )
{
   vsto_cell.Value2 = "'" + ssg_cell.Text;
}
else
   vsto_cell.Value2 = ssg_cell.Value;