如何让 Excel 个单元格达到 "right-size" 的内容?

How can I get Excel cells to "right-size" to their content?

我希望我用 C# 填充的 Excel 展开 sheet 单元格展开或收缩,以便显示所有内容而无需手动调整单元格的宽度 - 显示在 "just enough"显示数据的宽度 - 不多也不少。

我试过这个:

_xlSheet = (MSExcel.Excel.Worksheet)_xlSheets.Item[1];
_xlSheet.Columns.AutoFit();
_xlSheet.Rows.AutoFit();

...但它在我当前的项目中没有任何作用(它在不包含任何范围的小型 POC 沙箱应用程序中运行良好)。说到范围,这不起作用的原因 可能 与我创建的单元格范围有关:

var rowRngMemberName = _xlSheet.Range[_xlSheet.Cells[1, 1], _xlSheet.Cells[1, 6]];
rowRngMemberName.Merge(Type.Missing);
rowRngMemberName.Font.Bold = true;
rowRngMemberName.Font.Italic = true;
rowRngMemberName.Font.Size = 20;
rowRngMemberName.Value2 = shortName;

...然后添加 "normal"/generic 单细胞值。

换句话说,我的值跨越多列 - 其中的几行。然后在下面,我恢复到 "one cell, one value" 模式。

是这个问题吗?

如果是这样,我该如何解决?

是否可以有一个跨页的独立部分sheet,其格式(自动调整)不受 sheet 其他部分的影响?

更新

至于获取多行以容纳一个值,我正在使用此代码:

private void AddDescription(String desc)
{
    int curDescriptionBottomRow = curDescriptionTopRow + 3;

    var range =
        _xlSheet.Range[_xlSheet.Cells[curDescriptionTopRow, 1], _xlSheet.Cells[curDescriptionBottomRow, 1]];
    range.Merge();

    range.Font.Bold = true;
    range.VerticalAlignment = XlVAlign.xlVAlignCenter;
    range.Value2 = desc;
}

...这是它的成就:

如果我正确地理解了您的问题,那么您正在寻找换行文字...至少这是它的官方术语...

 xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;

这是文档:https://msdn.microsoft.com/en-us/library/office/ff821514.aspx

毕竟需要 AutoFit,但关键是在正确的时间调用它 - 所有其他操作完成后。否则,后续操作可能会失去自动拟合性。