以前的笔记, 转存到这里:
qt支持xml国际语言,html是xml的一种。html是做网页的,相信大家比较熟悉。所以使用html的<table></table>生成表格。然后导出html格式文件。或者直接导出xls格式。excel是能够直接识别的。
下附简短代码:
//初始化QTextEdit里面的内容
void MainWindow::initText()
{
QString begin = QString::fromLocal8Bit("<HTML><HEAD></HEAD><BODY><TABLE CELLSPACING=0 cellpadding=10 COLS=8 BORDER=1 ><TR><TD COLSPAN=8 ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=8 COLOR=RED>表格测试</TD></TR><TR><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4 > 序号 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 日期 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 飞机 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 大炮 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 火箭 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 轮船 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 汽车 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 我的自行车 </TD></TR>");
QString mid = QString::fromLocal8Bit("<TR><TD ALIGN=CENTER VALIGN=MIDDLE >%1</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%2</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%3</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%4</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%5</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%6</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%7</TD><TD ALIGN=CENTER VALIGN=MIDDLE >%8</TD></TR>");
QString end = QString::fromLocal8Bit("</TABLE></BODY></HTML>");
QString mid2 = mid.arg(1).arg(2).arg(3).arg(4).arg(5).arg(6).arg(7).arg(8);
QString mid3 = mid.arg("a").arg("b").arg("c").arg("d").arg("e").arg("f").arg("g").arg("h");
begin.append(mid2);
begin.append(mid3);
begin.append(end);
textEdit->setText(begin);
}
//保存文件对话框(对于某些格式QTextDocumentWriter可直接保存,其他不支持的格式就用QTextStream以流的形式保存 )
void MainWindow::on_actionSave_as_triggered()
{
QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("EXCEL files (*.xls);;ODS files (*.ods);;ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)"));
if (fn.isEmpty())
return;
if (! (fn.endsWith(".xls", Qt::CaseInsensitive)||fn.endsWith(".odt", Qt::CaseInsensitive) || fn.endsWith(".htm", Qt::CaseInsensitive) || fn.endsWith(".html", Qt::CaseInsensitive)|| fn.endsWith(".ods", Qt::CaseInsensitive)) )
fn += ".xls"; // default
if (fn.endsWith(".odt", Qt::CaseInsensitive)){
QTextDocumentWriter writer(fn);
writer.write(textEdit->document());
}else{
QFile index(fn);
if (index.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream liu(&index);
liu.setCodec("UTF-8");
liu<<textEdit->document()->toHtml("UTF-8");
}
}
}