2017-06-16 117 views
-2

這是我的代碼:如何在Qt中打印.xlsx格式?

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

我該如何解決?

+2

在傳奇線程中發帖 – user2722968

+3

你預計會發生什麼?你會以同樣的方式打印圖像嗎? (打開文件並將二進制內容寫入紙張?)您需要使用Excel渲染器。 – RvdK

+0

我希望它是像Excel一樣打印表 –

回答

3

你在紙上看到的是二進制文件本身的UTF-8解碼版本。你需要一個Excel兼容的渲染器來將這些數據轉換成你可以打印的東西。

從我腦袋:

  • 如果你是在MacOS,您可以使用qlmanage得到一個粗略的預覽爲JPG文件。您可能很容易打印,但您無法控制預覽的創建方式(例如僅顯示第一張紙)。
  • 在Windows上,您可以COM - 控制Excel安裝並要求它打印該文件的所有表單。
  • 您可能可以通過API控制Libre-或OpenOffice來執行相同操作。
+0

請問,你能分享鏈接或顯示例子嗎? –

+0

或者我需要更正代碼? –

+0

IIRC,調用'excel.exe -print path/to/Document.xls'將導致excel打印該死的東西,無論如何。如果你需要更多的控制,可以使用「excel ole api」或「excel com api」來搜索一下。 – user2722968