如何将合并的 Excel 内容换行超过指定长度?
How to wrap merged Excel content beyond a specified length?
我的 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();
问题是,如果合并后的内容中只有一个或几个 "outliers" 比其他内容长得多,我想将它们包装起来。在我认为过长的情况下 content/text,我怎样才能将它分成两行(因为它要换行)?
我尝试添加这些:
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;
}
...但是这个修复没有解决任何问题。
如何告诉它在什么时候换行?
在某种程度上,将范围的 WrapText 设置为 true 确实有效 - 当您手动减小列宽时,文本会换行(但仅在那时)。
对我有用的是自动换行的组合,以及通过为其指定精确宽度来收回一列的自动调整在调用自动调整后:
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;
我的 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();
问题是,如果合并后的内容中只有一个或几个 "outliers" 比其他内容长得多,我想将它们包装起来。在我认为过长的情况下 content/text,我怎样才能将它分成两行(因为它要换行)?
我尝试添加这些:
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;
}
...但是这个修复没有解决任何问题。
如何告诉它在什么时候换行?
在某种程度上,将范围的 WrapText 设置为 true 确实有效 - 当您手动减小列宽时,文本会换行(但仅在那时)。
对我有用的是自动换行的组合,以及通过为其指定精确宽度来收回一列的自动调整在调用自动调整后:
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;