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?