-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 上,您可以使用qlmanageJPG 文件来获得粗略的预览。您可能可以很容易地打印它,但您无法控制预览的创建方式(例如,只会出现第一张纸)。
  • 在 Windows 上,您可以COM控制 Excel 安装并要求它打印该文件及其所有工作表。
  • 你也许可以通过 API 控制 Libre 或 OpenOffice 来做同样的事情。
于 2017-06-16T10:25:32.553 回答