• 4090阅读
  • 1回复

[提问]Qt操作QAxObject生成excel文件后无法使用excel的分析功能 [复制链接]

上一主题 下一主题
离线oracle513
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-15
各位大神:

小弟使用QAxObject生成excel文件后,发现无法正常使用excel的数据分析功能,比如添加个曲线,然后显示“数据太复杂无法显示”等,下面是部分代码:

QAxObject *excel = new QAxObject(this);
excel->setControl("Excel.Application");//连接Excel控件    excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体    excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示    QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合    workbooks->dynamicCall("Add");//新建一个工作簿    QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿    QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合    QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1    QAxObject *cellX;    QAxObject *font;    ui->progressBar->setMaximum(model->rowCount());    ui->progressBar->setValue(0);    //Begin 写入表头    for(int k=0;k<iCount;k++)    {        QString Z=excelItems[k]+QString::number(1);//设置要操作的单元格,如A1~Z1        cellX = worksheet->querySubObject("Range(QVariant, QVariant)",Z);//获取单元格        cellX->dynamicCall("SetValue(const QVariant&)",QVariant(items[k]));//设置单元格的值        cellX->setProperty("WrapText", true);  //内容过多,自动换行        cellX->setProperty("RowHeight", 30);  //设置单元格行高,表头可能会比较        cellX->setProperty("ColumnWidth", 10);  //设置单元格列宽        cellX->setProperty("HorizontalAlignment", -4108); //左对齐(xlLeft):-4131  居中(xlCenter):-4108  右对齐(xlRight):-4152        cellX->setProperty("VerticalAlignment", -4108);  //上对齐(xlTop)-4160 居中(xlCenter):-4108  下对齐(xlBottom):-4107        font =cellX->querySubObject("Font");        font->setProperty("Name", QStringLiteral("Arial"));  //设置单元格字体    }    //End    for(int j =0;j<model->rowCount();j++)    {        for(int i=0;i<iCount;i++)        {            QString X=excelItems[i]+QString::number(j+2);//设置要操作的单元格,如A2            cellX = worksheet->querySubObject("Range(QVariant, QVariant)",X);//获取单元格            cellX->dynamicCall("SetValue(const QVariant&)",QVariant(model->item(j,i)->data(Qt::DisplayRole)));//设置单元格的值            cellX->setProperty("RowHeight", 15);  //设置单元格行高            cellX->setProperty("ColumnWidth", 10);  //设置单元格列宽            cellX->setProperty("HorizontalAlignment", -4108); //左对齐(xlLeft):-4131  居中(xlCenter):-4108  右对齐(xlRight):-4152            cellX->setProperty("VerticalAlignment", -4108);  //上对齐(xlTop)-4160 居中(xlCenter):-4108  下对齐(xlBottom):-4107            //cellX->setProperty("WrapText", true);  //内容过多,自动换行            font =cellX->querySubObject("Font");            font->setProperty("Name", QStringLiteral("Arial"));  //设置单元格字体            QApplication::processEvents();            ui->label->setText(QString("正在保存第%1行,共%2行").arg(j+1).arg(model->rowCount()));            ui->progressBar->setValue(j+1);        }    }生成的excel文件无法上传哎,截图见附件
[table=1020,#ffffff,,0][tr][td=1,1,85]Start[/td][td=1,1,85]Station[/td][td=1,1,85]Fuel[/td][td=1,1,85]Units[/td][td=1,1,85]NOx[/td][td=1,1,85]Date[/td][td=1,1,85]Time[/td][td=1,1,85]No of Sample[/td][td=1,1,85]Time of Sample[/td][td=1,1,85]Room Temperature[/td][td=1,1,85]O2[/td][td=1,1,85]CO[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:06:57
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:06:59
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:00
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:01
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:02
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:03
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:04
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:05
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:06
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:07
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:08
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:09
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:10
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][tr][td=1,1,85]-->
[/td][td=1,1,85]21903
[/td][td=1,1,85]coalgas            
[/td][td=1,1,85]ppm
[/td][td=1,1,85]0
[/td][td=1,1,85]09.07.2015
[/td][td=1,1,85]11:07:11
[/td][td=1,1,85]1
[/td][td=1,1,85]1
[/td][td=1,1,85]33.80
[/td][td=1,1,85]20.95
[/td][td=1,1,85]0.00
[/td][/tr][/table]
离线oracle513

只看该作者 1楼 发表于: 2015-07-15
不好意思,发现问题所在了:model->item(j,i)->data(Qt::DisplayRole))的数据有一个回车,trim掉就好了。谢谢。
快速回复
限100 字节
 
上一个 下一个