赞
踩
前段时间通过Qt设置Excel的内容,每次设置 1-3 这种内容的时候,会被Excel自动转为日期格式。
后来查了一下,可以设置单元格为文本属性,显示内容与输入内容保持一致。
需要先设置单元格的格式再设置单元格中的内容,否则1-3还是会被转为日期格式。
- QAxObject *t_excel = new QAxObject; //连接Excel控件
- QAxObject *t_workBooks; //获取工作簿集合
- QAxObject *t_workBook; //获取当前工作簿
- QAxObject *t_workSheets; //获取工作表集合
- QAxObject *t_workSheet1; //获取工作表集合的工作表Sheets1
- QAxObject *t_cell; //获取cell的值
-
- //连接Excel控件,如果没有office,就用WPS
- if (t_excel->setControl("Excel.Application"))
- {
-
- }
- else
- {
- t_excel->setControl("ket.Application");
- }
-
- t_excel->dynamicCall("SetUserControl(bool UserControl)", true); //用户启动程序
- t_excel->dynamicCall("SetVisible (bool Visible)", "false"); //不显示窗体
- t_excel->setProperty("DisplayAlerts", false); //关闭提示和警告消息
-
- t_workBooks = t_excel->querySubObject("WorkBooks");
- t_workBooks->dynamicCall("Add");//工作薄集合中添加工作薄
- t_workBook = t_excel->querySubObject("ActiveWorkBook");
- t_workSheets = t_workBook->querySubObject("Sheets");
-
- t_workSheet1 = t_workSheets->querySubObject("Item(int)", 1); //工作表1
- t_workSheet1->setProperty("Name", "Sheets1"); //设置工作表1名称为Sheets1
-
- int t_colCount = 5; //5列
- int t_rowCount = 5; //5行
-
- //设置单元格属性
- QString merge_cell;
- merge_cell.append(QChar('A')); //初始列
- merge_cell.append(QString::number(1)); //初始行
- merge_cell.append(":");
- merge_cell.append(QChar(t_colCount - 1 + 'A')); //终止列
- merge_cell.append(QString::number(t_rowCount + 1)); //终止行
- QAxObject *merge_range = t_workSheet1->querySubObject("Range(const QString&)", merge_cell);
- merge_range->setProperty("NumberFormat", "@"); //设置所有单元格为文本属性
-
- //写入数据到excel表格
- for (int i = 0; i < t_colCount; i++)
- {
- for (int j = 0; j < t_rowCount; j++)
- {
- QString t_strData = "NULL";
- // 获取excel表格中的单元格索引,以(1, 1)为起点
- t_cell = t_workSheet1->querySubObject("Cells(int, int)", j + 1, i + 1);
- // 写入数据到excel中的单元格
- t_cell->dynamicCall("SetValue(const QString&)", t_strData);
- }
- }
-
- QFile t_file(t_filePath);
- t_workBook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(_filePath));
- t_workBook->dynamicCall("Close()", false);
- t_excel->dynamicCall("Quit()");
- //关闭
- delete t_excel;
- t_excel = NULL;
先设置单元格格式再设置内容!
还有其他几种单元格的数字格式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。