c# - 在 C# 写入 Excel 中,如何按原样显示一个大数字(不使用科学计数法)?
问题描述
我正在从后端发送一个 excel 文件。我有一些卡号的长号码。我需要在 Excel 中显示它们,但我希望它们都是数字并按原样编辑它们(有时值和显示的文本不同,我希望它们相同)。
问题是当我设置单元格的数据类型时
var currentRow = 1;
var cardNo = "9993232323232320";
worksheet.Column(6).CellsUsed().SetDataType(XLDataType.Text);
worksheet.Cell(currentRow, 6).Value = cardNo;
worksheet.Column(6).CellsUsed().SetDataType(XLDataType.Text);//Doesn't matter if it is before or after
我可以使用 SetValue 方法设置值,这使得单元格字符串:
worksheet.Cell(currentRow, 6).SetValue(cardNo);
但是在这种情况下,excel在数字前面添加了一个撇号,这使它看起来像是一个文本。当您尝试编辑单元格时,撇号存在于数字前面。
最后我尝试通过设置单元格的 NumberFormatId
worksheet.Cell(currentRow, 6).Value = cardNo;
worksheet.Column(6).Style.NumberFormat.NumberFormatId = 1;
有关 NumberFormatId 的信息:https ://github.com/ClosedXML/ClosedXML-wiki/blob/master/NumberFormatId-Lookup-Table.md 在这种情况下,单元格是一个数字,看似一个数字,但当您尝试编辑时再次该行,该行包含一个科学数字。
我可以像这样通过excel实现我想要的:
- 转到一列,右键单击,设置单元格格式
- 数字标签 -> 数字
- Options->Decimal Places,设置为0,Format Code设置为0。然后在该列的一行中添加一个数字。
或者像这样:
- 转到一列->右键单击->格式化单元格
- 数字选项卡-> 文本-> 确定。并编辑线条。
如何在 C# 的 ClosedXML 中实现相同的功能
解决方案
这是数字格式的 wiki:https ://github.com/ClosedXML/ClosedXML-wiki/blob/master/NumberFormatId-Lookup-Table.md
在这个问题中,试图实现的是:
- 转到一列->右键单击->格式化单元格
- 数字选项卡-> 文本-> 确定。并编辑线条。
通过查看给定链接中的 NumberFormatId 表,此操作的 Id 为 49,因此代码必须为worksheet.Column(6).CellsUsed().Style.NumberFormat.NumberFormatId = 49;
另一个问题是您必须使用 SetValue 而不是设置 Value ,例如:
worksheet.Cell(currentRow, 6).SetValue(cardNo);
之后它必须工作。
推荐阅读
- javascript - 了解嵌套函数如何在 javascript 中工作
- swift - 在 UICollection 视图单元中看不到任何数据
- xamarin.forms - 接收 FCM 通知时如何在 Xamrin.Forms 上打开 ContentPage?
- c# - IdentityServer4 快速入门 IdentityServer 作为身份/api 端点和 MVC 客户端
- r - 带有数据点的 barplot() - 基础 R
- reinforcement-learning - 为什么贝尔曼方程的直接解的时间复杂度是 n^3?
- android - Icon问题localNotificationsPlugin,如何正确添加app Icon
- reactjs - 有什么方法可以在reactjs中实现linkedin登录吗?
- javascript - json 到 csv 逗号问题 javascript
- javascript - 获取数据键值并包含在 .html 之前的 URL 中