作者q00153 (TB)
看板Soft_Job
標題Re: [請益]有辦法WORD或EXCEL表單直接轉乘系統表單
時間Thu Aug 27 17:24:33 2020
※ 引述《carolgilbert (凱洛吉博)》之銘言:
: 請教一下
: 有辦法用WORD或EXCEL做好的表單,直接匯入某個公司自己的系統形成電子表單嗎?
: 如果可行,這會需要用到什麼程式語言?
: 如果不能匯入現有系統,
: 那我自己再建立一個電子表單的系統,之後有辦法用WROD或EXECL建立表單後,
: 匯入這個新的系統,讓它自己形成符合這個系統格式的電子表單嗎?
: 同樣的問題,這個轉換需要用到什麼程式技術?
: --補充說明一下,我不是要侵入別人的系統啦。
: 因為我們公司有非常多的表單(領料申請單、請假單、製程檢點表、品質檢查表。。。
等
: 幾千份表單),而且每天持續增加與改版,現在就是希望看看能不把既有的跟以後新增
的w
: ord、excel表單丟到既有系統裡讓它直接轉換成電子表單,讓員工在系統上點選跟填寫
完
: 畢後,利用原本系統完成簽核。
: 如果不能丟到既有系統,也可以接受建一個新的系統,日後可以把表單匯入後讓它自動
轉
: 成電子表單。
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.127.46 (臺灣)
: ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1598495175.A.5A8.html
: → airtsubasa: 侵入乙方資料庫下insert,出事怪誰?乙方沒提供介面匯 08/27 10:
37
: → airtsubasa: 入,你要問乙方可不可以啊! 08/27 10:
37
: → DCTmaybe: 看不太懂你想問什麼,反正用google form就對了 08/27 11:
09
: → Kazimir: 首先那個「公司的系統」要能夠匯入啊 08/27 11:
23
: → jack0204: 這裡看起來像某個公司的系統客服嗎 08/27 11:
37
: 推 GoalBased: 可以 大部分語言都可以做 08/27 11:
48
: 推 Csongs: 可以 很常見 08/27 12:
08
: → allenxxx: 可以,但如果有被告的疑慮,請自行承擔 08/27 12:
16
: 推 mozume: RPA? 08/27 12:
23
: → samuel1988: Ragic 08/27 13:
53
: → william0126: python用現成的excel模塊+http request模塊很快速 08/27 15:
03
: ※ 編輯: carolgilbert (1.200.173.121 臺灣), 08/27/2020 15:51:25
: 推 enthos: 機器人流程自動化RPA(Robotic Process Automation) 08/27 16:
41
如果要最好的方法
如果您伺服器是 windows server
可以在伺服器上安裝 Office 然後
使用 COM 連結 OLE 建立 Excel 或 Word 的 Application
由於這是微軟官方的東東
你要準確到 Excel A1 儲存格的第一個字是什麼顏色,什麼字體都可以讀出來~~
只要你會 VBA 使用上是很容易
如果你的伺服器語言是 PHP 參考 (
https://www.php.net/manual/en/book.com.php)
<?php
$ex = new COM("Excel.Application", NULL, CP_UTF8) or Die("Did not inst
an
$wb = $ex->Application->Workbooks->Open("file.xlsx") or Die("Failed to
O
$ws = $wb->Worksheets(1);
$cell = $ws->Cells(1, 1);
$value = $cell->value;
...
$wb->Close();
unset($ws);
unset($wb);
$ex->Workbooks->Close();
$ex->Quit();
unset($ex);
?>
如果你的伺服器語言是 Python 參考 (
https://pbpython.com/windows-com.html)
import win32com.client as win32
ex = win32.gencache.EnsureDispatch('Excel.Application')
wb = ex.Workbooks.Open("file.xlsx")
...
wb.Close()
ex.Application.Quit()
如果你的伺服器語言是 Golang 參考 (
https://github.com/go-ole/go-ole)
package main
import (
"time"
ole "github.com/go-ole/go-ole"
"github.com/go-ole/go-ole/oleutil"
)
func main() {
ole.CoInitialize(0)
defer ole.CoUninitialize()
unknown, _ := oleutil.CreateObject("Excel.Application")
ex, _ := unknown.QueryInterface(ole.IID_IDispatch)
defer oleutil.CallMethod(ex, "Quit")
defer ex.Release()
...
}
如果你的伺服器語言是 ASP C# 參考 (
http://csharp.net-informations.com/excel/csh
ar
如果你的伺服器語言是 ASP VB 參考 (
https://docs.microsoft.com/en-us/office/vba/
la
如果你的伺服器語言是 Java 參考 (
https://stackoverflow.com/questions/6679810/is
-t
如果您伺服器是 Linux
請參考各種程式語言的 office 套件
不過通常支援程度都比較低,而且主要是 Excel 讀寫套件,Word 的很少
其中 Java 的 Apache POI 套件是最好的 (
https://poi.apache.org/)
PHP 可參考 (
https://github.com/ziadoz/awesome-php#office)
Python 可參考 (
https://github.com/vinta/awesome-python#specific-formats-proces
si
Golang 可參考 (
https://github.com/avelino/awesome-go#microsoft-office)
或者可以裝一個 Windows VM
把檔案丟到 VM 讀取完再讀取出來
另一個做法是 Excel 或 Word 檔案本身用 VBA 參考 (
https://codingislove.com/http-
re
用寫爬蟲的原理,把資料讀取後 put 到伺服器上
這樣使用者一樣 key Office 檔案
key 完之後按個按鈕就上拋至伺服器
可以使用 256 位元的 key 比對混淆後的電腦 MAC 位址來查看是否從正確的電腦上傳的
資?
取代網頁的登入驗證
以上報告~感激~
--
Sent from my Windows
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.75.194.99 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1598520285.A.54F.html
→ ChungLi5566: Apache POI計算Excel的公式結果可能會出錯 08/27 20:23
對啊,這也是我最後沒有選擇 Apache POI 的原因,在一些小地方相容性還是不太好,雖
然很強大了
※ 編輯: q00153 (42.77.111.185 臺灣), 08/28/2020 08:45:19
推 kyoe: 認真推推 08/28 10:18
推 RayLeeRock: 推分享 08/31 01:39