C# 以编程方式设置图纸';在读取单元格内容之前,将格式转换为文本

C# 以编程方式设置图纸';在读取单元格内容之前,将格式转换为文本,c#,excel,openxml,C#,Excel,Openxml,我有一个要求,阅读excel表格的内容,写入它,并允许编辑和重新导入。我遇到的问题是,当用户在工作表的单元格中输入一个数字时,后面的数字被认为是SharedString表上的索引,我不需要这种效果。我想做的是,在继续阅读之前,强制将工作表中的单元格格式化为文本。我相信这样的话,我确信我的数字会被当作字符串处理。请问我该如何做到这一点 我非常感谢使用OPENXML库来解决这个问题的例子 在VBA中类似这样: Cells.Select Selection.NumberFormat = "@" 确保

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

我非常感谢使用OPENXML库来解决这个问题的例子

在VBA中类似这样:

Cells.Select
Selection.NumberFormat = "@"

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

但是,如果要制作格式文本,只需调用:

Cells.NumberFormat = "@"
至于我上面所说的更多细节。。。更改格式不会改变单元格的.Value。值通常是字符串、日期或双精度值,具体取决于其数字格式和内容


编辑
由于你最后的评论,我为你做了一些额外的研究。然而,我并没有对此进行测试。如果这对您没有帮助,我建议更新您的问题,以显示您试图帮助社区获得更多响应的内容

您应该能够利用中列出的步骤(如果有帮助,请确保向上投票)

唯一的变化是,您应该能够跳过创建。当您了解代码时:
cellFormat.NumberFormatId=nf2decimal.NumberFormatId而不是nf2decimal。。。只要用49。所以

cellFormat.NumberFormatId=4949应该对应于预定义的numeberFormat@

我在工作表、行或从行中提取的每个单元格上调用它吗?这是什么<代码>单元格。Numberformat
适用于区域或工作表。如果在类似于
工作表.Cells.Numberformat
的工作表上调用,它将影响工作表上的所有单元格。您在那里使用的是什么库?我还没有在我的单元格和工作表上找到numberformat属性。哦,我没有意识到你不能直接访问Excel。这个问题可能会对您有所帮助:似乎格式化的形式根本无法解决问题。有些值仍然会进入SharedStringTable,这是正常的。唯一的问题是,当我在表中输入数字值时,它们会在ShareString表上显示为索引,这会导致显示错误的数据。我正在使用OPENXML,因此在该库中很难找到上述内容。如果在OPENXML中,我应该查找什么名称空间?