我怎样才能让Excel单元格“正确的大小”到他们的内容?

我希望使用C#填充的Excel电子表格单元展开或收缩,以便在不手动调整单元格宽度的情况下显示其所有内容 – 以“恰到好处”的宽度显示数据 – 不多不less。

我试过这个:

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

…但它在我当前的项目中没有做任何事情(在没有范围的小POC沙盒应用程序中工作正常)。 说到范围,这个不起作用的原因可能与我创build单元格区域有关,如下所示:

 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; 

…然后添加“正常”/通用单元格值。

换句话说,我具有跨越多列的值 – 几行。 然后在下面,我回到“一格一格”的模式。

这是问题吗?

如果是的话,我该如何解决呢?

是否可以有一个电子表格的独立部分的格式(自动assembly)不受表格的其他部分的影响?

UPDATE

至于获得多行来容纳一个值,我使用这个代码:

 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; } 

…这是它完成的:

在这里输入图像说明

毕竟,AutoFit是需要的,但关键是要在适当的时候调用它 – 所有其他操作完成之后。 否则,后续的操作可能会失去自动化。

如果我得到你所要求的正确的东西,你正在寻找包装文本…至less这是它的正式任期…

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

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