描述:
用以下方法作操EXECL..怎么设置列宽
{Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Range iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return FALSE;
}
//打开
books.AttachDispatch(app.GetWorkbooks());
lpDisp = books.Open(CPhoneUsersApp::m_szPath,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional );
//得到Workbook
book.AttachDispatch(lpDisp);
//得到Worksheets
sheets.AttachDispatch(book.GetWorksheets());
//*****
//得到当前活跃sheet
//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待
lpDisp=book.GetActiveSheet();
sheet.AttachDispatch(lpDisp);
//*****
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
Range usedRange;
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
long iRowNum=range.GetCount(); //已经使用的行数
range.AttachDispatch(usedRange.GetColumns());
long iColNum=range.GetCount(); //已经使用的列数
long iStartRow=usedRange.GetRow(); //已使用区域的起始行,从1开始
long iStartCol=usedRange.GetColumn(); //已使用区域的起始列,从1开始
book.Save();
//*****
//关闭所有的book,退出Excel
book.Close (covOptional,COleVariant(CPhoneUsersApp::m_szPath),covOptional);
books.Close();
app.Quit();
book.ReleaseDispatch();
books.ReleaseDispatch();
app.ReleaseDispatch();
}
解决方案1:
Range myrange=workSheet.GetRange((COleVariant)strHead,(COleVariant)strHead);
myrange.SetColumnWidth(COleVariant((short)nLength));
http://www.cndiy8.com/ask32/how125321.htm