在读取单元格内容之前,以编程方式将工作表的格式设置为文本

时间:2012-10-19 20:00:42

标签: c# excel openxml spreadsheet

我需要阅读Excel工作表的内容,写入并允许编辑和重新导入。我遇到的问题是,当用户在工作表的单元格中输入一个数字时,数字在背面被认为是SharedString表上的索引,这是我不需要的效果。我想要做的是强制将工作表中的单元格格式化为文本,然后再继续阅读它。我相信这一点,我相信我的数字将被视为字符串。我该如何做到这一点?

我很感激使用OPENXML库解决这个问题的例子。

2 个答案:

答案 0 :(得分:2)

确定从Excel检索的内容是字符串的唯一方法是调用Range.Text(它将根据当前格式返回显示的文本),只能使用单个单元格检索。

但是如果你想制作文字格式,那么只需调用:

Cells.NumberFormat = "@"

作为上述内容的进一步细节......更改格式不会改变单元格的.Value。值通常是字符串,日期或双打,具体取决于其数字格式和内容。


修改
由于您的上次评论,我为您做了一些额外的研究。但是,我没有对此进行测试。如果这对你没有帮助,我建议你更新你的问题,以显示你试图从社区获得更多回应的内容。

您应该能够使用this answer中列出的步骤(如果它对您有所帮助,请务必提供支持)。

唯一的变体是,您应该可以跳过创建NumberingFormat。当你到达代码: cellFormat.NumberFormatId = nf2decimal.NumberFormatId;而不是nf2decimal ......只需使用49.所以...... cellFormat.NumberFormatId = 49; 49应对应@ according to this source

的预定义的数字格式

答案 1 :(得分:1)

在VBA中这样:

Cells.Select
Selection.NumberFormat = "@"