2009-11-17 100 views
1

我已經遞交了一份重要的宏文件,其中包含一張滿是發票的舊學校文件,幸運的是相當一致。宏讀取這個文件,移動數據使其保持一致,然後生成三個選項卡的電子表格,這幾乎是三個CSV文件。然後它生成這三個CSV的另一個電子表格,其中每張發票都有一個標籤。發票金額可能真的有所不同。從網上運行的Excel宏?

它的作品,每個人都很高興。我們希望以一定的安全性將其發佈到網絡上。現在,讓用戶:

1)登錄,上傳舊學校文件,然後按壓過程,然後將每個標籤作爲發票吐出相同的電子表格。

2)將數據存儲在數據庫中以備未來增長和使用這些數據以及報告。

我在教自己的ASP.NET和C#,並認爲這將是一個偉大的學習項目。在我進入它之前,可以這樣實際地完成,在這種情況下其他人會推薦什麼?我應該簡單地根據宏中的邏輯重新編寫代碼,還是有辦法移植到現有的VBA代碼上?

+0

您可以在網絡上共享文件夾並將文件存儲在那裏以進行只讀嗎? – CheeseConQueso 2009-11-17 16:44:47

+0

現在沒有技術限制,因爲所有這些都是理論上的,所以要回答你的問題......現在是的。在將來?將不得不評估影響。 – ichauvin 2009-11-17 16:52:36

回答

1

從Web應用程序使用Excel COM API很困難。有一些安全問題是不重要的。如果你想保留excel處理,那麼你可以建立某種帶外處理來監視上傳目錄,當它檢測到一個新文件時,開始轉換excel文件,就像舊宏一樣。

從VBA到C#沒有簡單的轉換,因爲所有的VBA代碼都假定了excel的存在,但情況可能並非如此。但是,您可以使用COM API在工作簿中調用宏。

2

你可以用Excel COM API來做到這一點。但這往往會導致內存泄漏,我不會推薦它。

Microsoft有Excel Services,它允許您在服務器上運行Excel Spreadsheets。但它非常昂貴,可能不支持宏。

SpreadSheetGear也許可以做到這一點。但我沒有自己測試過。

我會建議你用C#重寫應用程序,你會得到一個更好的解決方案,它可能不會讓你得到電子表格運行在服務器上。

+0

將基於VBA的代碼轉換爲VB.NET如何?看起來像一個更自然的進展。 – ichauvin 2009-11-18 18:01:04

1

從C#駕駛Excel令人驚訝地很難100%正確。相反,從VB6應用程序驅動Excel非常容易。但是,從Web應用程序調用它會使其變得更加困難,因爲您需要同時處理安全性和併發性(同時2個用戶會相互訪問)。

微軟不支持在服務器上使用Excel(除了Excel Services),所以不要期望有任何幫助。 SpreadsheetGear適用於此,但您必須爲此付費。

你說這會讓一個很好的學習項目 - 我不同意;它可能會讓你完全沒有編程。這種特殊的組合沒有「好的」解決方案 - 這是發現最不令人愉快的黑客攻擊的情況。如果你想學習ASP.NET & C#,我會說找到另一個寵物項目。

+0

良好的反饋和誠實的答案。我可能不得不考慮SpreadsheetGear,根據這些發票的重要性,我可以證明成本合理。我想知道WSS(Sharepoint)有什麼? – ichauvin 2009-11-17 22:12:47

+0

我猜Excel Services會成爲Sharepoint的一部分..這會回答這個問題。 – ichauvin 2009-11-17 22:32:44