如何通过c#excel interop获取和设置excel列宽

问题描述 投票:0回答:2

我在创建excel时使用excel互操作。现在,我必须获取一列的大小作为下一列大小的基础。我尝试了以下代码:

width = xlWorksheet.Range[xlWorksheet.Cells[1, 4], xlWorksheet.Cells[1, 11]].Width;
xlWorksheet.Columns[5].ColumnWidth = width;

width_of_first_col = xlWorksheet.Range[xlWorksheet.Cells[1, 1], xlWorksheet.Cells[1, 1]].Width;
xlWorksheet.Columns[6].ColumnWidth = width_of_first_col;

结果应该是第4列和第5列的大小以及第1列和第6列的大小相同。但这并不完全符合实际结果。

将一个单元格的with设置为另一个单元格的最佳做法是什么。谢谢。

c# excel excel-interop
2个回答
1
投票

Excel以多种方式管理列宽。

  • [Columnwidth属性返回或设置列宽为一列中可以容纳的普通字体的字符数。请参考此link
  • width属性以指定的here范围内的点数表示宽度。

0
投票

[Range.Width是只读属性,为您提供以磅为单位的宽度。

Range.ColumnWidth是读/写属性,它为您提供了我喜欢的字符单位宽度。字符单位代表由工作簿的0样式定义的字体类型和大小下的字符Normal的宽度。

在您的情况下,由于不需要计算点的宽度,因此始终使用.ColumnWidth

n = ColumnNumberOfYourChoice;
width = xlWorksheet.Range.Columns.Item[n].ColumnWidth;
xlWorksheet.Columns[5].ColumnWidth = width;

width_of_first_col = xlWorksheet.Range.Columns.Item[1].ColumnWidth;
xlWorksheet.Columns[6].ColumnWidth = width_of_first_col;
© www.soinside.com 2019 - 2024. All rights reserved.