C# Excel-列宽与多个累计值不匹配
我正在使用c#Excel互操作,并试图使合并单元格的高度与其内容相适应。由于某些原因,无法对合并单元格进行自动调整,因此我使用以下方法进行调整C# Excel-列宽与多个累计值不匹配,c#,excel,office-interop,C#,Excel,Office Interop,我正在使用c#Excel互操作,并试图使合并单元格的高度与其内容相适应。由于某些原因,无法对合并单元格进行自动调整,因此我使用以下方法进行调整 private void AutoFitAndMerge(Range toMerge, Range contentCell) { // Get Width of entire Merged Cell double width = 0.0; foreach (Range col in toMerge.Columns) {
private void AutoFitAndMerge(Range toMerge, Range contentCell) {
// Get Width of entire Merged Cell
double width = 0.0;
foreach (Range col in toMerge.Columns) {
width += col.ColumnWidth;
}
// mimic merged cell with regular cell
var cellWidth = contentCell.ColumnWidth;
contentCell.ColumnWidth = width;
contentCell.WrapText = true;
// autofit the regular cell and copy that to merged
contentCell.Rows.AutoFit();
var wantedHeight = contentCell.RowHeight;
// set it back
contentCell.ColumnWidth = cellWidth;
toMerge.Merge();
toMerge.WrapText = true;
toMerge.RowHeight = wantedHeight;
}
除了在开始时,当我将contentCell的宽度设置为合并单元格的总宽度时,它没有正确地相加之外,这一切都很正常。问题是contentCell最终会稍微变小,导致内容有时会再次环绕,并为合并的单元格分配太多空间 在excel中,当您将2个或更多列宽相加并将其作为宽度分配给单元格时,也会发生这种情况,结果是列宽稍微变小。
单元格是否有某种填充/边距,我如何考虑 最后在宽度计算后添加了以下代码:
// excel has some cell padding or whatever? This is a workaround for it
width += .514 * ((toMerge.Columns.Count-1) * 2);
这是一个黑客,但它满足我的要求,并为我工作。它所做的基本上是假设在所有具有特定值的单元格上都有一个排序填充,并将其添加到总数中
不接受这个答案,因为事实并非如此。在宽度计算后添加了以下代码:
// excel has some cell padding or whatever? This is a workaround for it
width += .514 * ((toMerge.Columns.Count-1) * 2);
这是一个黑客,但它满足我的要求,并为我工作。它所做的基本上是假设在所有具有特定值的单元格上都有一个排序填充,并将其添加到总数中
不接受这个答案,因为事实并非如此