使用自动化从Excel的get_Text。 如果单元格太窄,请获取#####。 我怎样才能避免呢?

我从Excel工作表使用自动化get_Text。 我这样做是因为我需要格式化的值(获取单元格的值不应用任何格式)。 如果单元格所在的列太窄,我会得到“#####”,如果我通过Excel来查看电子表格,那也是一样的。 我怎样才能避免呢?

编辑:

这是相关的代码:

// Return the (string) value of a cell HRESULT CDialogImport::GetCellValue(IRange *irange, int irow, int icol, CString &cstrValue) { // Get dispatch interface for the cell at irow,icol COleVariant vCell; HRESULT hr = AutoWrap( DISPATCH_PROPERTYGET, &vCell, irange, L"Item", 2, COleVariant((short)(icol+1)), COleVariant((short)(irow+1))); if (FAILED(hr)) return hr; // Use the dispatch interface to get the value of the cell COleVariant result; hr = AutoWrap( DISPATCH_PROPERTYGET, &result, vCell.pdispVal, L"Text", 0); if (SUCCEEDED(hr)) { cstrValue = result; } return hr; } 

IRange接口提供了一个IRange AutoFit()方法。

根据文档 ,调用这将使列足够宽,以适应其内容。 ( 这是.NET互操作性文档,但我希望这里没有任何区别

注意(重点是我的):

expression式必须是一行或一系列行 ,或一列或一列的列 。 否则,这种方法会产生一个错误。

你应该能够获取和设置列宽(rangeobject.ColumnWidth) – 增加宽度之前抓文本应该做的伎俩。