2017-07-19 56 views
1

我正在使用c#Excel Interop並試圖使合併單元格的高度適合其內容。在合併單元格自動調整不能出於某種原因做,所以我用下面的方法Excel - 列寬不匹配多個加起來

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中,當你將兩個或更多的列寬相加並將它分配給單元格爲寬度時,它最終會稍微變小。
單元格是否具有某種填充/邊距,我該如何考慮?

回答

0

弄成寬度計算後加入以下代碼:

// excel has some cell padding or whatever? This is a workaround for it 
width += .514 * ((toMerge.Columns.Count-1) * 2); 

這是一個黑客,但它符合我的需求,併爲我工作。它所做的基本上是假定所有具有特定值的單元格都有一些填充並將其添加到總數中。

不接受這個作爲答案,因爲好,事實並非如此。