为啥尝试自动调整工作表的宽度或该工作表上的单个列会失败?

Posted

技术标签:

【中文标题】为啥尝试自动调整工作表的宽度或该工作表上的单个列会失败?【英文标题】:Why does attempting to autofit the width of a sheet, or a single column on that sheet, fail?为什么尝试自动调整工作表的宽度或该工作表上的单个列会失败? 【发布时间】:2017-03-02 17:43:49 【问题描述】:

我有一列的内容被截断,我想避免必须双击右列装订线来查看数据。首先,我尝试自动调整整个 shebang:

private void PopulatePivotTableDataSheet()

    if (null == _produceUsagePivotDataList) return;
    AddColumnHeadingRowPivotData();
    foreach (ProduceUsagePivotData pupd in _produceUsagePivotDataList)                
    
        AddPivotData(pupd.ItemCode, pupd.ItemDescription, pupd.Unit, pupd.MonthYear, pupd.Quantity,
            pupd.TotalPrice, pupd.IsContractItem);
    
    _xlPivotDataSheet.Cells.AutoFit();

...但最后一行因“Range 类的 AutoFit 方法失败”而失败

然后我尝试将它应用于有问题的列,如下所示:

private void AddPivotData(String ItemCode, String ItemDescription, String Unit, String MonthYear, int Quantity, Decimal TotalPrice, Boolean IsContractItem)

    var itemCodeCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 1];
    itemCodeCell.Value2 = ItemCode;

    var itemDescriptionCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 2];
    itemDescriptionCell.Value2 = ItemDescription;
    itemDescriptionCell.AutoFitWidth(); 
    . . .

...最后一行失败,“'System.__ComObject' 不包含 'AutoFitWidth' 的定义”

Sam Hill o' beans 发生了什么?自动拟合应该很容易实现,不是吗?

【问题讨论】:

试试_xlPivotDataSheet.Cells.EntireColumn.AutoFit(); 那行得通;让它成为一个答案,我会这样标记它。 【参考方案1】:

这会将 AutoFit 应用于包含范围的列:

_xlPivotDataSheet.Cells.EntireColumn.AutoFit();

【讨论】:

以上是关于为啥尝试自动调整工作表的宽度或该工作表上的单个列会失败?的主要内容,如果未能解决你的问题,请参考以下文章

如何在保留所有其他工作表的同时覆盖现有 Excel 工作表上的数据?

自动填充活动工作表后,另一张工作表上的自动填充不起作用(无错误)

受保护工作表上的表单控件

将不同的列堆叠成不同工作表上的一列

VBA选择工作表中的所有列并自动调整Excel 2010中的所有列宽度

MySQL - 一个表上的行删除不会更新另一表的关系