你需要做两件事:
1.)将单元格标记为“Wrapped Text”。如果您使用现有电子表格作为模板,您可以在电子表格中手动执行此操作。只需右键单击单元格并选择“设置单元格格式.. ”,单击“对齐”选项卡并选中“换行”复选框。
或者...您可以通过编程方式设置 CellFormat。如果您有一个名为“ cf ”的 CellFormat 对象,您将执行以下操作:
cf.ApplyAlignment = true;//Set this so that Excel knows to use it.
if (cf.Alignment == null)//If no pre-existing Alignment, then add it.
cf.Alignment = new Alignment() { WrapText = true };
Alignment a = cf.Alignment;
if (a.WrapText == null || a.WrapText.Value == false)
a.WrapText = new BooleanValue(true);//Update pre-existing Alignment.
2.)你不应该使用“\n”,而应该使用标准的回车+换行组合:“\r\n”
如果你将两者混合(即“\n”没有前面"\r" 和 "\r\n"),这应该在填充单元格值之前修复它:
sHeaderText = sHeaderText.Replace("\r\n", "\n").Replace("\n", "\r\n");
我自己不使用CellValues.String甚至CellValues.InlineString。相反,我使用CellValues.SharedString
构建我的文本单元格(就像 Excel 一样)。对于 Bool,我使用“ CellValues.Boolean ”,对于所有其他(数字和日期),我没有将单元格的DataType设置为任何值 - 因为这是 Excel 在查看它创建的标记时所做的。