【问题标题】:How to print .xlsx format in Qt?如何在 Qt 中打印 .xlsx 格式?
【发布时间】:2017-06-16 08:45:04
【问题描述】:

这是我的代码:

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 的问题。您可以查看纸质版here

我该如何解决?

【问题讨论】:

  • 在传奇线程发帖​​span>
  • 您预计会发生什么?你会以同样的方式打印图像吗? (打开文件并将二进制内容写入纸张?)您需要和 Excel 渲染器。
  • 我预计它会像 Excel 表格一样打印

标签: c++ qt qprinter


【解决方案1】:

您在纸上看到的是二进制文件本身的 utf-8 解码版本。您需要一个与 Excel 兼容的渲染器来将此数据转换为您可以打印的内容。

想不通:

  • 如果您使用的是 MacOS,可以使用qlmanage 粗略预览 JPG 文件。您可能可以很容易地打印它,但您无法控制预览的创建方式(例如,只会出现第一张纸)。
  • 在 Windows 上,您可以COM-控制 Excel 安装并要求它打印该文件及其所有工作表。
  • 您可以通过 API 控制 Libre 或 OpenOffice 来执行相同的操作。

【讨论】:

  • IIRC,调用 excel.exe -print path/to/Document.xls 将导致 excel 只打印该死的东西,无论这意味着什么。如果您需要更多控制,请在“excel ole api”或“excel com api”上进行一些谷歌搜索
猜你喜欢
  • 2018-01-10
  • 2018-01-19
  • 1970-01-01
  • 2018-10-30
  • 2012-01-07
  • 2011-04-30
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多