QT调用Excel时,设置自动调整列宽和所有单元格居中
来源:互联网 发布:杭州智尚网络 编辑:程序博客网 时间:2024/06/05 03:21
楼主最近公司项目需要利用QT访问EXCEL库完成新建表、往表中填数据并直接打印出来的功能。
首先由于数据部分有的比较长,需要自动调整列宽才能直接打印,其次又因为不居中的话打印出来不太美观,所以楼主就开始研究自动调整列宽和单元格居中这两个问题。
经过网上搜索以及各种尝试,终于完成了,在这里稍作分享。
关于QT使用QAxObject调用EXCEL这部分楼主就不多说了,网上有很多类似的帖子,主要是记住最后要关闭了文档后再delete掉excel对象。
楼主先贴出来初始化调用excel创建一个表的代码,供大家参考。
//创建新的表格,清理了range 为写入做好了准备 下面开始写入文本
QAxObject *excel = new QAxObject("Excel.Application");if (excel==NULL){return false;}excel->setProperty("Visible", false);QAxObject * workbooks = excel->querySubObject("WorkBooks");if (workbooks==NULL){return false;}workbooks->dynamicCall("Add");QAxObject * workbook = excel->querySubObject("ActiveWorkBook");if (workbook==NULL){return false;}QAxObject * workSheet = workbook->querySubObject("Worksheets(int)",1);if (workSheet==NULL){return false;}QAxObject * range = workSheet->querySubObject("UsedRange");if (range==NULL){return false;}range->dynamicCall("Clear");
往单元格里面填数据的代码就不贴了,更多的是按照需求去填数据,主要方法是通过调用Cells函数得到一个单元格然后使用setValue函数把数据填进去即可。
现在贴上后面处理自动调整列宽和设置居中的代码:
range = workSheet->querySubObject("UsedRange");QAxObject * cells = range->querySubObject("Columns");cells->dynamicCall("AutoFit");range->setProperty("HorizontalAlignment",-4108);range->setProperty("VerticalAlignment",-4108);workbook->dynamicCall("SaveAs(QString)", strFileName);workbook->dynamicCall("Close(Boolean)", false);excel->dynamicCall("Quit(void)");
这里重新用range得到所有的使用的单元格,调用colunms得到所有列,然后调用AutoFit函数直接设置为自动调整列宽。
下面两句直接设置range的水平对齐和垂直对齐的参数。这里-4108就是居中的枚举常数。
后面是另存excel文档名为strFileName,然后关闭文档,最后退出调用excel。
delete excle以及发送其他处理信号的代码没有贴出来。
楼主花的时间大部分是在于设置range对齐参数的时候,一直觉得可以直接写成”xlCenter“,后来才意识到这个是个枚举常数,才去网上查excel里的枚举常数,找到xlCenter对应的值。
最后附上excel枚举常数查阅网址:http://technet.microsoft.com/zh-cn/library/ff197824
range = workSheet->querySubObject("UsedRange");QAxObject * cells = range->querySubObject("Columns");cells->dynamicCall("AutoFit");range->setProperty("HorizontalAlignment",-4108);range->setProperty("VerticalAlignment",-4108);workbook->dynamicCall("SaveAs(QString)", strFileName);workbook->dynamicCall("Close(Boolean)", false);excel->dynamicCall("Quit(void)");
- QT调用Excel时,设置自动调整列宽和所有单元格居中
- QT---设置tablewidget自适应列宽和设置自动等宽
- qt设置tablewidget自适应列宽和设置自动等宽
- QTableWidget自动调整列宽和行高
- webapi下使用npoi导出数据到excel,包含自动列宽和自动合并某一列单元格
- POI中设置Excel单元格格式(背景色,居中,字体,边框,列宽,行高,自动换行等)
- 【Qt开发】QTableWidget设置根据内容调整列宽和行高
- 怎样设置excel中自动调整行高、列宽?
- DataGridView 列宽和行高自动调整的设定
- 【转】DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- DataGridView 列宽和行高自动调整的设定
- POI中设置Excel单元格格式样式(居中,字体,边框,背景色、列宽、合并单元格等)
- 互联网协议入门(二)
- mysql查询语句-handler
- Android下编译cocos2d-x项目报错 ***'AssetsManager.o'. Stop
- HDU 1069 Monkey and Banana
- 【Android】【输入法】android 自动弹出输入法
- QT调用Excel时,设置自动调整列宽和所有单元格居中
- org.apache.struts.taglib.html.MessagesTei cannot be cast to javax.servlet.js
- 厦门力游网络科技有限公司专业承接游戏美术外包
- java.lang.AbstractMethodError问题
- std中vector和list容器遍历时元素的动态删除
- oracle汉字占用字节长度
- vmware虚拟机网络连接问题
- ReportStudio进阶教程(二十一) - 动态排序
- commons-fileupload-1.2.1实现文件上传