PTT推薦

Re: [請益]有辦法WORD或EXCEL表單直接轉乘系統表

看板Soft_Job標題Re: [請益]有辦法WORD或EXCEL表單直接轉乘系統表作者
q00153
(TB)
時間推噓 2 推:2 噓:0 →:1

※ 引述《carolgilbert (凱洛吉博)》之銘言:
: 請教一下
: 有辦法用WORD或EXCEL做好的表單,直接匯入某個公司自己的系統形成電子表單嗎?
: 如果可行,這會需要用到什麼程式語言?
: 如果不能匯入現有系統,
: 那我自己再建立一個電子表單的系統,之後有辦法用WROD或EXECL建立表單後,
: 匯入這個新的系統,讓它自己形成符合這個系統格式的電子表單嗎?
: 同樣的問題,這個轉換需要用到什麼程式技術?
: --補充說明一下,我不是要侵入別人的系統啦。
: 因為我們公司有非常多的表單(領料申請單、請假單、製程檢點表、品質檢查表。。。

: 幾千份表單),而且每天持續增加與改版,現在就是希望看看能不把既有的跟以後新增的w
: ord、excel表單丟到既有系統裡讓它直接轉換成電子表單,讓員工在系統上點選跟填寫
: 畢後,利用原本系統完成簽核。
: 如果不能丟到既有系統,也可以接受建一個新的系統,日後可以把表單匯入後讓它自動

: 成電子表單。
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.127.46 (臺灣)
: ※ 文章網址: https://www.ptt.cc/Soft_Job/M.1598495175.A.5A8
: → 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 instan
$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/cshar
如果你的伺服器語言是 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-processi
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 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.75.194.99 (臺灣)
PTT 網址

ChungLi556608/27 20:23Apache POI計算Excel的公式結果可能會出錯

對啊,這也是我最後沒有選擇 Apache POI 的原因,在一些小地方相容性還是不太好,雖 然很強大了

※ 編輯: q00153 (42.77.111.185 臺灣), 08/28/2020 08:45:19

kyoe08/28 10:18認真推推

RayLeeRock08/31 01:39推分享