-1

これは私のコードです:

QPrinter printer;
QPrintDialog dialog(&printer, this);
printer.setPageSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setPageMargins (15,15,15,15,QPrinter::Millimeter);
printer.setFullPage(false);
printer.setOutputFormat(QPrinter::NativeFormat);
if(dialog.exec() != dialog.Accepted) {
    return;
}

QPainter painter(&printer);
painter.setFont(QFont("Tahoma",15));
QFile file;
file.setFileName("D:/cedvel2017.xlsx");
file.open(QFile::ReadOnly);
char line[1024];
int lineNum = 0;
while(file.readLine(line,1024)>0) {
    lineNum++;
    QString str(line);
    painter.drawText(10,40*lineNum,str);
    qDebug() << str;
}
file.close();
painter.end();

しかし、私は印刷に問題があります。テーブルを印刷すると、そのデータは通常の形式で表示されません。UTF-8に問題があると思います。印刷されたコピーはここで見ることができます。

どうすれば解決できますか?

4

1 に答える 1

3

紙に表示されているのは、バイナリ ファイル自体の utf-8 デコード バージョンです。このデータを印刷できるものに変換するには、Excel 互換のレンダラーが必要です。

私の頭から:

  • MacOS を使用している場合はqlmanage、JPG ファイルとして大まかなプレビューを取得するために使用できます。おそらく非常に簡単に印刷できますが、プレビューの作成方法を制御することはできません (たとえば、最初のシートのみが表示されます)。
  • Windows ではCOM、Excel のインストールを制御して、そのファイルとすべてのシートを印刷するように依頼できます。
  • LibreまたはOpenOfficeをAPI制御して同じことを行うことができる場合があります。
于 2017-06-16T10:25:32.553 に答える