QT将TableWidget 导出为excel的几种方法
2015-04-22 10:42
691 查看
1.使用OLE
原文链接:http://blog.csdn.net/cool222/article/details/38639647
2.转为html
因为excel识别html中的table 元素,所以可以按下文转换。
缺点:转换后的表格较为难看
void MainWindow::Table2ExcelByHtml(QTableWidget *table)
{
table->horizontalHeaderItem(0);
//构建html文档内容
QString filepath = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("EXCEL files (*.xls *.xlsx);;HTML-Files (*.htm *.html);;"));
QString Begin = QString::fromLocal8Bit("<html><head></head><body><table border=\"1\" >");
QString end = QString::fromLocal8Bit("</table></body></html>");
QList<QString> list;
int row = table->rowCount();
int col = table->columnCount();
/* //若有列标题,取消此部分注释
QString header = "<tr>";
for(int i=0;i<col;i++)
{
QString cel = table->horizontalHeaderItem(i)->text();
header += QString("<td>%1</td>").arg(cel);
}
header += "</tr>";
list.push_back(header);
*/
for(int i=0;i<row;i++)
{
QString rowStr = "<tr>";
for(int j=0;j<col;j++)
{
QString cel = table->item(i,j)->text();
rowStr += QString("<td>%1</td>").arg(cel);
}
rowStr += "</tr>";
list.push_back(rowStr);
}
QString text = Begin;
for(int i=0;i<list.size();++i)
{
text.append(list.at(i));
}
text.append(end);
QTextEdit textEdit;
textEdit.setText(text);
QFile file(filepath);
if(file.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream ts(&file);
ts.setCodec("UTF-8");
ts<<textEdit.document()->toHtml("UTF-8");
}
}
3.转换为制表符文件
同上,因为EXCEL可以以tab识别单元格,导出后的样式比上个方法较为好看。
void MainWindow::Table2ExcelByTxt(QTableWidget *table)
{
QString filepath = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("EXCEL files (*.xls *.xlsx);;HTML-Files (*.txt);;"));
int row = table->rowCount();
int col = table->columnCount();
QList<QString> list;
//添加列标题
QString HeaderRow;
for(int i=0;i<col;i++)
{
HeaderRow.append(table->horizontalHeaderItem(i)->text()+"\t");
}
list.push_back(HeaderRow);
for(int i=0;i<row;i++)
{
QString rowStr = "";
for(int j=0;j<col;j++){
rowStr += table->item(i,j)->text() + "\t";
}
list.push_back(rowStr);
}
QTextEdit textEdit;
for(int i=0;i<list.size();i++)
{
textEdit.append(list.at(i));
}
QFile file(filepath);
if(file.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream ts(&file);
ts.setCodec("UTF-8");
ts<<textEdit.document()->toPlainText();
file.close();
}
}
原文链接:http://blog.csdn.net/cool222/article/details/38639647
2.转为html
因为excel识别html中的table 元素,所以可以按下文转换。
缺点:转换后的表格较为难看
void MainWindow::Table2ExcelByHtml(QTableWidget *table)
{
table->horizontalHeaderItem(0);
//构建html文档内容
QString filepath = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("EXCEL files (*.xls *.xlsx);;HTML-Files (*.htm *.html);;"));
QString Begin = QString::fromLocal8Bit("<html><head></head><body><table border=\"1\" >");
QString end = QString::fromLocal8Bit("</table></body></html>");
QList<QString> list;
int row = table->rowCount();
int col = table->columnCount();
/* //若有列标题,取消此部分注释
QString header = "<tr>";
for(int i=0;i<col;i++)
{
QString cel = table->horizontalHeaderItem(i)->text();
header += QString("<td>%1</td>").arg(cel);
}
header += "</tr>";
list.push_back(header);
*/
for(int i=0;i<row;i++)
{
QString rowStr = "<tr>";
for(int j=0;j<col;j++)
{
QString cel = table->item(i,j)->text();
rowStr += QString("<td>%1</td>").arg(cel);
}
rowStr += "</tr>";
list.push_back(rowStr);
}
QString text = Begin;
for(int i=0;i<list.size();++i)
{
text.append(list.at(i));
}
text.append(end);
QTextEdit textEdit;
textEdit.setText(text);
QFile file(filepath);
if(file.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream ts(&file);
ts.setCodec("UTF-8");
ts<<textEdit.document()->toHtml("UTF-8");
}
}
3.转换为制表符文件
同上,因为EXCEL可以以tab识别单元格,导出后的样式比上个方法较为好看。
void MainWindow::Table2ExcelByTxt(QTableWidget *table)
{
QString filepath = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("EXCEL files (*.xls *.xlsx);;HTML-Files (*.txt);;"));
int row = table->rowCount();
int col = table->columnCount();
QList<QString> list;
//添加列标题
QString HeaderRow;
for(int i=0;i<col;i++)
{
HeaderRow.append(table->horizontalHeaderItem(i)->text()+"\t");
}
list.push_back(HeaderRow);
for(int i=0;i<row;i++)
{
QString rowStr = "";
for(int j=0;j<col;j++){
rowStr += table->item(i,j)->text() + "\t";
}
list.push_back(rowStr);
}
QTextEdit textEdit;
for(int i=0;i<list.size();i++)
{
textEdit.append(list.at(i));
}
QFile file(filepath);
if(file.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream ts(&file);
ts.setCodec("UTF-8");
ts<<textEdit.document()->toPlainText();
file.close();
}
}
相关文章推荐
- Qt的tableWidget或tableView导出内容至EXCEL
- asp.net导出数据到Excel的几种方法(1/3)
- js操作table表格导出数据到excel方法
- C#导出数据到Excel的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- 转:datagrid数据导出到excel文件给客户端下载的几种方法
- 导出Excel的方法,传入为table或html!
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- OEL导出excel文件时候,美化excel的几种方法
- 把数据导出到Excel的几种方法说明
- datagrid数据导出到excel文件给客户端下载的几种方法
- 导出Excel 的几种方法。
- datagrid数据导出到excel文件给客户端下载的几种方法
- 将html中table导出到excel xls文件的一种可用方法
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- 极好的导出table为Excel的方法(除IE外各浏览器可使用)
- Javascript实现把网页中table的内容导入到excel中的几种方法
- 把数据导出到Excel的几种方法说明
- datagrid数据导出到excel文件给客户端下载的几种方法 (转)