2017-07-19 1 views
1

Ich benutze das C# Excel Interop und versuche, die Größe einer zusammengefügten Zelle an den Inhalt anzupassen. Autofit auf fusionierte Zellen können aus irgendeinem Grund nicht durchgeführt werden, so dass es mit dem folgenden VerfahrenExcel - Spaltenbreite stimmt nicht mit mehreren zusammen

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

Ich mache aus Das funktioniert gut, außer am Anfang, als ich die contentCell der Breite auf die fusionierten Zellen Gesamtbreite eingestellt es, addiert sich nicht richtig.
Das Problem ist, dass die contentCell etwas kleiner wird, was dazu führt, dass sich der Inhalt manchmal noch einmal umwickelt und zu viel Speicherplatz für die verbundene Zelle reserviert.

Dies passiert auch in Excel, wenn Sie 2 oder mehr Spaltenbreiten addieren und sie einer Zelle als Breite zuweisen, dann wird es etwas kleiner.
Haben die Zellen eine Art Padding/Rand und wie berücksichtige ich das?

Antwort

0

den folgenden Code nach der Breitenberechnung Zugabe Ended up:

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

Es ist ein Hack, aber es erfüllt meine Anforderungen und arbeitet für mich. Was es tut, geht im Grunde davon aus, dass auf allen Zellen eines bestimmten Werts eine Auffüllung der Arten vorhanden ist und diese zu der Summe hinzugefügt wird.

Nicht akzeptieren, da die Antwort seit gut, ist es nicht.

Verwandte Themen