2016-09-27 71 views
0

我一直在嘗試在SAP BO CMC中安排報告。這份報告最初是用Python編寫的,並內置在一個.exe文件中。此.exe應用程序運行時將報告保存到本地文件夾中的.xlsx文件中。 我想利用SAP BO CMC中的便捷調度功能來發送電子郵件中的報告。我嘗試並在CMC中創建了一個「本地程序」,並將其鏈接到.exe文件,但您可以輕鬆想象我遇到的問題 - 應用程序將文件保存在文件夾中,但CMC無法使用抓住生成的Excel文件。 有沒有辦法重新編寫Python程序,以便輸出不是某個文件夾中的文件,,而是CMC可以作爲電子郵件的附件獲得的對象? 我一直在安排CMC中的Crystal報表,這種情況很自然。 Crystal輸出可作爲電子郵件的附件發送。不知道類似的情況是否會發生.exe,以及如何? 請分享您的想法。非常感謝你!如何將Excel文件作爲電子郵件附件放入SAP CMC中?

P.S.儘管如此,不要認爲可以在Crystal中重寫報表,因爲數據需要根據來自不同數據源的輸入進行操作。這就是Python提供幫助的地方。我希望我不需要編寫該程序來覆蓋電子郵件的內容,並將其安排在Windows的計劃任務中。最後一個選項...這將太不方便維護。我們無法輕鬆訪問服務器。

回答

1

這是一種黑客行爲,但它可以做到。讓程序(exe)將Excel文件的字節寫出到標準輸出中。然後爲電子郵件目標配置程序對象,並將文件名設置爲特定名稱(例如「whatever.xlsx」)。

通過電子郵件發送程序對象時,附加文件將包含程序的標準輸出/錯誤。通常這只是文本,但它也適用於二進制輸出。

由於這是一個黑客,如果程序生成任何其他文本(如錯誤消息)到標準輸出,它將被包含在.xlsx文件中,這將使文件無效。我會建議管理程序錯誤,使他們登錄到文件,而不是標準輸出/錯誤。

我用Java程序對象測試了這個;但一個EXE應該也一樣。

+0

謝謝Joe。我想這是在Python中使用「打印」。我試過「打印」,是的它確實發送輸出作爲附件。我唯一的問題是 - 原諒我成爲Excel處理新手 - 我應該在「打印」字符串中寫入什麼,使其成爲Excel文件?我打印的結果是一個文本文件... – Ann

+0

'print()'將通過調用'str()'將您傳遞的對象轉換爲一個字符串。你會想要輸出字節到標準輸出,因此不是一個普通的字符串,而是一個二進制字符串('b''')。使用'sys.stdout.buffer.write(b'abc')'將二進制數據寫入輸出流(參見[docs](https://docs.python.org/3.5/library/sys.html# sys.stdout),尤其是註釋)。 –

相關問題