如何包装超过指定长度的合并Excel内容

本文关键字:合并 内容 Excel 何包装 包装 | 更新日期: 2023-09-27 18:21:45

我的Excel电子表格中有一列,其内容我分布(合并)在四行上,如下所示:

private void AddDescription(String desc)
{
    int curDescriptionBottomRow = _curDescriptionTopRow + 3;
    var range = _xlSheet.Range[_xlSheet.Cells[_curDescriptionTopRow, ITEMDESC_COL], _xlSheet.Cells[curDescriptionBottomRow, ITEMDESC_COL]];
    range.Merge();
    range.Font.Bold = true;
    range.VerticalAlignment = XlVAlign.xlVAlignCenter;
    range.Value2 = desc;
}

我后来自动调整列的宽度,刚好可以显示所有内容:

_xlSheet.Columns.AutoFit();

问题是,如果合并后的内容中只有一个或几个"异常值",并且比其他内容长得多,我想包装这些内容。在我认为内容/文本过长的情况下,我如何将其拆分为两行(因为它要换行)?

我试着添加这些:

range.ColumnWidth = 144;
range.WrapText = true;

因此代码是:

private void AddDescription(String desc)
{
    int curDescriptionBottomRow = _curDescriptionTopRow + 3;
    var range = _xlSheet.Range[_xlSheet.Cells[_curDescriptionTopRow, ITEMDESC_COL], _xlSheet.Cells[curDescriptionBottomRow, ITEMDESC_COL]];
    range.Merge();
    range.Font.Bold = true;
    range.ColumnWidth = 42;
    range.WrapText = true;
    range.VerticalAlignment = XlVAlign.xlVAlignCenter;
    range.Value2 = desc;
}

但是这个修复没有修复任何东西。

你如何告诉它在什么时候包装文本?

如何包装超过指定长度的合并Excel内容

在某种程度上,将范围的WrapText设置为true确实有效——当手动减小列的宽度时,文本会换行(但仅限于此)。

对我来说,有效的方法是将单词换行和在调用AutoFit:后为一列指定精确宽度来恢复自动拟合

private static readonly int WIDTH_FOR_ITEM_DESC_COL = 42;
. . .
_xlSheet.Columns.AutoFit();
// The AutoFitting works pretty well, but one column needs to be manually tweaked due to potentially over-long Descriptions
((Range)_xlSheet.Cells[1, 1]).EntireColumn.ColumnWidth =  WIDTH_FOR_ITEM_DESC_COL;