QT html转excel

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QTextDocumentWriter>
#include <QTextStream>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initText();
}

MainWindow::~MainWindow()
{
    delete ui;
}

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("<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("</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);
    ui->textEdit->setText(begin);
}

void MainWindow::on_actionSaveAs_triggered()
{
    QString fileName = QFileDialog::getSaveFileName(this,
                                                    tr("Save as..."),
                                                    QString(),
                                                    tr("EXCEL files (*.xls);;ODS files (*.ods);;ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)"));
    if (fileName.isEmpty())
        return;

    if (! (fileName.endsWith(".xls", Qt::CaseInsensitive)||
           fileName.endsWith(".odt", Qt::CaseInsensitive) ||
           fileName.endsWith(".htm", Qt::CaseInsensitive) ||
           fileName.endsWith(".html", Qt::CaseInsensitive)||
           fileName.endsWith(".ods", Qt::CaseInsensitive)) )
        fileName += ".xls"; // default

    if (fileName.endsWith(".odt", Qt::CaseInsensitive)){
        QTextDocumentWriter writer(fileName);
        writer.write(ui->textEdit->document());
    }else{
        QFile file(fileName);
        if (file.open(QFile::WriteOnly | QIODevice::Text))
        {
            QTextStream liu(&file);
            liu.setCodec("UTF-8");
            liu << ui->textEdit->document()->toHtml("UTF-8");
        }
    }
}


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void initText();

private:
    Ui::MainWindow *ui;

private slots:
    void on_actionSaveAs_triggered();
};

#endif // MAINWINDOW_H



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值