Qt中导出.txt, .xls, .xlsx, .pdf文件小结
来源:互联网 发布:加华伟业资本 知乎 编辑:程序博客网 时间:2024/05/16 05:18
1. 使用QTextStream输出流导出.txt文件
QString strFilePath = "C:/test.txt";
QFile file(strFilePath);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::information(NULL, tr("提示信息:"), tr("文件打开失败!"));
return;
}
QTextStream out(&file);
out<<"1"<<"\t"<<"2013-1-25 12:00:00"<<"\t"<<tr("武汉")<<"\t"<<"wuhan"<<endl
<<"2"<<"\t"<<"2013-1-25 12:00:00"<<"\t"<<tr("广州")<<"\t"<<"guangzhou"<<endl
<<"3"<<"\t"<<"2013-1-25 12:00:00"<<"\t"<<tr("深圳")<<"\t"<<"shenzhen"<<endl;
file.close();
2. 使用DSN连接Excel表格处理导出.xls文件 (但是.xlsx文件写不进)
QString strFilePath = "C:/test.xls";
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "excelexport");
if (!db.isValid()) {
QMessageBox::information(NULL, tr("提示信息:"), tr("连接ODBC驱动失败"));
return;
}
QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%1\";DBQ=%2")
.arg(strFilePath).arg(strFilePath);
db.setDatabaseName(dsn);
if (!db.open()) {
QMessageBox::information(NULL, tr("提示信息:"), tr("打开Excel表格失败!"));
return;
}
QSqlQuery query(db);
QString strSql = QString("DROP TABLE mydata");
query.exec(strSql);
strSql.clear();
strSql = QString("CREATE TABLE mydata (id number, dt date, addr char(60), name char(60))");
query.exec(strSql);
strSql.clear();
strSql = QString("INSERT INTO mydata (id, dt, addr, name) VALUES (1, '2013-1-25 12:00:00', '%1', 'wuhan')").arg(tr("武汉"));
query.exec(strSql);
strSql.clear();
strSql = QString("INSERT INTO mydata (id, dt, addr, name) VALUES (2, '2013-1-25 12:00:00', '%1', 'guangzhou')").arg(tr("广州"));
query.exec(strSql);
strSql.clear();
strSql = QString("INSERT INTO mydata (id, dt, addr, name) VALUES (3, '2013-1-25 12:00:00', '%1', 'shenzhen')").arg(tr("深圳"));
query.exec(strSql);
db.close();
}
QSqlDatabase::removeDatabase("excelexport");
3. 直接对Excel文件做VBA编程导出.xlsx文件 (同样.xls文件也可以)
QString strFilePath = "C:/test.xlsx";
strFilePath = strFilePath.replace("/", "\\");//路径需要’\’反斜杠
//QAxWidget excelApp("Excel.Application");//也可以
QAxObject excelApp("Excel.Application");
QAxObject* excelWorkBooks = excelApp.querySubObject("Workbooks");
QAxObject* excelWorkBook;
QAxObject* excelWorkSheets;
QAxObject* excelWorkSheet;
//
if (excelWorkBooks) {
QFile file(strFilePath);
if (file.exists()) {
excelWorkBook = excelWorkBooks->querySubObject("Open(const QString&)", strFilePath);
} else {
excelWorkBook = excelWorkBooks->querySubObject("Add()");
}
if (excelWorkBook) {
excelWorkSheets = excelWorkBook->querySubObject("Sheets");
} else {
QMessageBox::information(0, tr("提示信息:"), tr("QAxObject workbook 初始化失败!"));
}
} else {
QMessageBox::information(0, tr("提示信息:"), tr("初始化Excel错误,可能没有安装Office组件!"));
}
excelWorkSheet = excelWorkSheets->querySubObject("Item(int index)", 1);
excelWorkSheet->setProperty("Name", "mydata");
QAxObject* excelSheetTab = excelWorkSheet->querySubObject("Tab");
excelSheetTab->setProperty("ColorIndex", 4);
QAxObject* excelSheetRange;
QAxObject* excelSheetInterior;
QAxObject* excelSheetFont;
//1, 2013-1-25 12:00:00, 武汉, wuhan
excelSheetRange = excelWorkSheet->querySubObject("Cells(1, 1)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(1));
excelSheetRange->setProperty("HorizontalAlignment", 1);
excelSheetRange->setProperty("ColumnWidth", 10);
excelSheetRange->setProperty("RowHeight", 40);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(3));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Bold", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(1, 2)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("2013-1-25 12:00:00"));
excelSheetRange->setProperty("NumberFormatLocal", "yyyy-mm-dd hh:mm:ss;@");
excelSheetRange->setProperty("HorizontalAlignment", 2);
excelSheetRange->setProperty("ColumnWidth", 30);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(4));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Italic", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(1, 3)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(tr("武汉")));
excelSheetRange->setProperty("HorizontalAlignment", 3);
excelSheetRange->setProperty("ColumnWidth", 20);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(5));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Name", "Verdana");
excelSheetRange = excelWorkSheet->querySubObject("Cells(1, 4)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("wuhan"));
excelSheetRange->setProperty("HorizontalAlignment", 4);
excelSheetRange->setProperty("ColumnWidth", 30);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(6));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("ColorIndex", QVariant(7));
//2, 2013-1-25 12:00:00, 广州, guangzhou
excelSheetRange = excelWorkSheet->querySubObject("Cells(2, 1)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(2));
excelSheetRange->setProperty("HorizontalAlignment", 1);
excelSheetRange->setProperty("RowHeight", 40);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(3));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Bold", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(2, 2)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("2013-1-25 12:00:00"));
excelSheetRange->setProperty("NumberFormatLocal", "yyyy-mm-dd hh:mm:ss;@");
excelSheetRange->setProperty("HorizontalAlignment", 2);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(4));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Italic", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(2, 3)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(tr("广州")));
excelSheetRange->setProperty("HorizontalAlignment", 3);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(5));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Name", "Verdana");
excelSheetRange = excelWorkSheet->querySubObject("Cells(2, 4)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("guangzhou"));
excelSheetRange->setProperty("HorizontalAlignment", 4);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(6));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("ColorIndex", QVariant(7));
//3, 2013-1-25 12:00:00, 深圳, shenzhen
excelSheetRange = excelWorkSheet->querySubObject("Cells(3, 1)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(3));
excelSheetRange->setProperty("HorizontalAlignment", 1);
excelSheetRange->setProperty("RowHeight", 40);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(3));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Bold", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(3, 2)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("2013-1-25 12:00:00"));
excelSheetRange->setProperty("NumberFormatLocal", "yyyy-mm-dd hh:mm:ss;@");
excelSheetRange->setProperty("HorizontalAlignment", 2);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(4));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Italic", true);
excelSheetRange = excelWorkSheet->querySubObject("Cells(3, 3)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant(tr("深圳")));
excelSheetRange->setProperty("HorizontalAlignment", 3);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(5));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("Name", "Verdana");
excelSheetRange = excelWorkSheet->querySubObject("Cells(3, 4)");
excelSheetRange->dynamicCall("SetValue(const QVariant&)", QVariant("shenzhen"));
excelSheetRange->setProperty("HorizontalAlignment", 4);
excelSheetInterior = excelSheetRange->querySubObject("Interior");
excelSheetInterior->setProperty("ColorIndex", QVariant(6));
excelSheetFont = excelSheetRange->querySubObject("Font");
excelSheetFont->setProperty("ColorIndex", QVariant(7));
//
excelApp.setProperty("DisplayAlerts", 0);
excelWorkBook->dynamicCall("SaveAs(const QString&)", strFilePath);
excelWorkBook->dynamicCall("Close(Boolean)", false);
excelApp.dynamicCall("Quit()");
4. 使用QPrinter导出.pdf文件
QString strFilePath = "C:/test.pdf";
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName(strFilePath);
QPainter painter;
if (!painter.begin(&printer)) {
QMessageBox::information(NULL, tr("提示信息:"), tr("打开.pdf文件失败!"));
return;
}
//第一页
QString strPrint = QString("1 2013-1-25 12:00:00 %1 wuhan").arg(tr("武汉"));
QPoint point(10, 10);
painter.drawText(point, strPrint);
strPrint.clear();
strPrint = QString("2 2013-1-25 12:00:00 %1 guanzhou").arg(tr("广州"));
point.setY(30);
painter.drawText(point, strPrint);
strPrint.clear();
strPrint = QString("3 2013-1-25 12:00:00 %1 shenzhen").arg(tr("深圳"));
point.setY(50);
painter.drawText(point, strPrint);
//第二页
printer.newPage();
strPrint = QString("1 2013-1-25 12:00:00 %1 wuhan").arg(tr("武汉"));
point.setY(10);
painter.drawText(point, strPrint);
strPrint.clear();
strPrint = QString("2 2013-1-25 12:00:00 %1 guanzhou").arg(tr("广州"));
point.setY(50);
painter.drawText(point, strPrint);
strPrint.clear();
strPrint = QString("3 2013-1-25 12:00:00 %1 shenzhen").arg(tr("深圳"));
point.setY(90);
painter.drawText(point, strPrint);
painter.end();
- Qt中导出.txt, .xls, .xlsx, .pdf文件小结
- "doc", "docx", "xls", "xlsx", "ppt", "pptx",txt。等文件转化为pdf
- PHP导出csv,xls,xlsx文件
- Android中pdf,doc,docx,xls,xlsx,ppt,pptx等office文件预览
- 文件导出(导出xls和txt)
- xls xlsx csv 导出datatable
- POI解析文档内容(txt,doc,docx,xls,xlsx,ppt,pdf)
- 读取CSV XLSX XLS文件
- lucene pdf+doc+ppt+xls+txt+多层文件
- 在线打开.PDF、.TXT等文件,.doc、.xls自动下载
- 不同类型文件之间互相转换(xls、xlsx、txt、son、xml)
- Flash在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
- Flash在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
- POI 通用导出Excel(.xls,.xlsx)
- POI 通用导出Excel(.xls,.xlsx)
- Excell的.xls和.xlsx的导出
- C#导出excel表格(xls、xlsx)
- 导出信息到.xls .xlsx Excel表
- ltp 交叉编译 出现error 解决
- 趣谈JAVA常用的设计模式
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState (转)
- vb学习之菜鸟方案
- Android入门:使用Android GPS实现简单的定位
- Qt中导出.txt, .xls, .xlsx, .pdf文件小结
- C#例子程序
- c#例子程序
- SQLite进阶:Android上的SQLite常用操作
- 生活场景与UML
- SQL不同服务器数据库之间的数据操作整理
- Android简单的SQLite操作及ListView展示数据
- Java虚拟机深入学习之一: Java虚拟机的内存区域
- 边界测试