为了账号安全,请及时绑定邮箱和手机立即绑定

在C#中将Excel列(或单元格)设置为文本格式?

在C#中将Excel列(或单元格)设置为文本格式?

C#
POPMUISE 2019-12-04 09:48:31
将值从数据表复制到Excel工作表时,我丢失了前导零。这是因为Excel可能会将值视为数字而不是文本。我在C#中创建了工作表,并且正在复制以下值:myWorksheet.Cells[i + 2, j] = dtCustomers.Rows[i][j - 1].ToString();如何将整个列或每个单元格设置为文本格式?一个相关的问题,如何myWorksheet.Cells[i + 2, j] 在Intellisense中强制显示样式属性?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

下面是一些代码,用于将SpreadsheetGear for .NET中的 A列和C列格式化为文本,其具有类似于Excel的API-除了SpreadsheetGear的键入频率通常更高之外。弄清楚如何将其转换为与Excel / COM配合使用应该不太困难:


IWorkbook workbook = Factory.GetWorkbook();

IRange cells = workbook.Worksheets[0].Cells;

// Format column A as text.

cells["A:A"].NumberFormat = "@";

// Set A2 to text with a leading '0'.

cells["A2"].Value = "01234567890123456789";

// Format column C as text (SpreadsheetGear uses 0 based indexes - Excel uses 1 based indexes).

cells[0, 2].EntireColumn.NumberFormat = "@";

// Set C3 to text with a leading '0'.

cells[2, 2].Value = "01234567890123456789";

workbook.SaveAs(@"c:\tmp\TextFormat.xlsx", FileFormat.OpenXMLWorkbook);


查看完整回答
反对 回复 2019-12-04
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我最近也与这个问题作斗争,并且我已经了解了上述建议的两件事。

  1. 将numberFormatting设置为@会导致Excel将值左对齐,并像对待文本一样读取它,但是,它仍然会截断前导零。

  2. 在开头添加撇号会导致Excel将其视为文本并保留零,然后应用默认的文本格式来解决这两个问题。

误导性的方面是您现在在单元格中具有不同的值。幸运的是,当您复制/粘贴或导出到CSV时,不包括撇号。

结论:使用撇号而不是numberFormatting来保留前导零。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 2904 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信