Qt 设置Excel单元格文本属性

前段时间通过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;

 

先设置单元格格式再设置内容!

还有其他几种单元格的数字格式

Excel VBA中的.NumberFormat选项是什么? - IT屋-程序员软件开发技术分享社区

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值