realfan |
2014-03-04 08:45 |
自用的Excel访问操作类
[attachment=11779][attachment=11780]
包括设置Excel单元格格式,颜色,边框,合并单元格等操作,支持列标识为三个字母的操作
QExcel * pExcelProc = new QExcel(this); pExcelProc->showExcelApp(true); //--------------------- pFont->ucMask = 0; pFont->ucMask |= MASK_BIT_FONT_NAME | MASK_BIT_FONT_SIZE; pFont->strFontName = "Arial"; pFont->ucFontSize = 9; pExcelProc->setRangeFont(1, 1, 2000, 200, pFont); pExcelProc->setRangeWrap(1, 1, 2000, 200, true);//设置换行
//==========报表总标题================ // for(int i = 0; i < m_lstXlsColWidth.size(); ++i) // { // pExcelProc->setColumnWidth(i+1, m_lstXlsColWidth); // }
int idxRow = 1; int idxCol = 1; pExcelProc->mergeCells(idxRow, idxCol, idxRow, 7); pExcelProc->setCellString(idxRow, idxCol, QString("报表")); //-------字体-------- pFont->ucMask = 0; pFont->ucMask |= MASK_BIT_FONT_SIZE | MASK_BIT_FONT_BOLD; pFont->ucFontSize = 16; pFont->bBold = true; pExcelProc->setRangeFont(idxRow, idxCol, idxRow + 1, 200, pFont);
pExcelProc->setRangeFormat(2, 1, 2, 200, "@"); pFont->ucMask = 0; pFont->ucMask |= MASK_BIT_FONT_SIZE | MASK_BIT_FONT_BOLD; pFont->ucFontSize = 12; pFont->bBold = true; pExcelProc->setRangeFont(2, 1, 2, 200, pFont);
//pExcelProc->setCellString(2, 6, tr("时间:")); pExcelProc->mergeCells(2, 7, 2, 8); //pExcelProc->setCellString(2, 7, m_ReadTime.toString("yyyy-MM-dd")); //pExcelProc->setCellString(2, 9, m_ReadTime.toString("hh:mm:ss")); //-------对齐-------
pBorder->ucStyle = 1; pBorder->ucWidth = 2; pBorder->ucColorIndex = 1; pAlig->H = ALIGNMENT_CENTER; pAlig->V = ALIGNMENT_CENTER; pExcelProc->setRangeAlignment(idxRow, idxCol, idxRow + 1, 200, pAlig); //------------------Region quarter month-------------------------------------------------------------- // idxRow++; //2 // pFont->ucFontSize = 9; // pExcelProc->setRangeFont(idxRow, 1, 10000, 254, pFont);
QTableWidget * pTbl = (QTableWidget*)(m_pTabWidget->currentWidget()); //============表头======================================== idxRow = iStartRow; QStringList lstStr; lstStr << tr("单号|10") << tr("接车时间|20") << tr("车牌号|15") << tr("品牌|15") <<tr("车主|15")<<tr("手机|15");
for(int i = 0; i < lstStr.size(); ++i) { QStringList lst = lstStr.at(i).split("|", QString::SkipEmptyParts); pExcelProc->setCellString(idxRow, i+1, lst.at(0));
pExcelProc->setColumnWidth(i+1, lst.at(1).toInt()); } int iColCount = lstStr.size(); pFont->ucMask = 0; pFont->ucMask |= MASK_BIT_FONT_BOLD; //pFont->ucFontSize = 16; pFont->bBold = true; pExcelProc->setRangeFont(idxRow, 1, idxRow, 250, pFont); pExcelProc->setRangeBkColor(idxRow, 1, idxRow, iColCount, Qt::gray); //============内容============================== pFont->bBold = false; pExcelProc->setRangeFont(idxRow+1, 1, 10000, 254, pFont); pExcelProc->setRangeFormat(iStartRow, 1, pTbl->rowCount()+iStartRow, 13, "@"); pExcelProc->setRangeFormat(iStartRow, 8, pTbl->rowCount()+iStartRow, 9, "@");
pFont->ucMask = 0; pFont->ucMask |= MASK_BIT_FONT_SIZE; pFont->ucFontSize = 9; //pFont->dwFontColor = cl;//QColor(150, 150, 150); pExcelProc->setRangeFont(iStartRow, 1, pTbl->rowCount()+iStartRow, iColCount, pFont); //pExcelProc->setRangeFormat(iStartRow, 1, m_lstRec.size()+iStartRow, iColCount, "@");
pAlig->H = ALIGNMENT_CENTER; pAlig->V = ALIGNMENT_CENTER; pExcelProc->setRangeAlignment(iStartRow, 1, pTbl->rowCount()+iStartRow, iColCount, pAlig); pExcelProc->drawGrid(iStartRow, 1, pTbl->rowCount()+iStartRow, iColCount); |
|