我想要使用C#填充的Excel电子表格单元格进行扩展或收缩,以便显示所有内容而无需手动调整单元格的宽度 - 以“足够”的宽度显示以显示数据 - 不多也不少。
我试过了:
_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;
...然后在此之后添加“普通”/通用单细胞值。
换句话说,我有跨越多列的值 - 几行。然后在下面,我恢复到“一个单元格,一个值”模式。
这是问题吗?
如果是,我该如何解决?
是否可以拥有电子表格的独立部分,其格式(自动调整)不受工作表其他部分的影响?
至于获取多行以容纳值,我正在使用此代码:
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;
}
......这就是它的成就:
答案 0 :(得分:1)
毕竟,AutoFit是需要的,但关键是在正确的时间调用它 - 在完成所有其他操作之后。否则,后续操作可能会失去自动操作性。
答案 1 :(得分:0)
如果我得到你正确的要求你正在寻找文字...至少那是官方用语......
xlWorkSheet.Range["A4:A4"].Cells.WrapText = true;
以下是文档:https://msdn.microsoft.com/en-us/library/office/ff821514.aspx