如何让 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,但关键是在正确的时间调用它 - 在所有其他操作完成后。否则,后续操作可能会失去自动拟合性。
我希望我用 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,但关键是在正确的时间调用它 - 在所有其他操作完成后。否则,后续操作可能会失去自动拟合性。