2010-03-09 64 views

回答

0

你可以要不是看在庫(噸他們在那裏)以編程方式讀寫Excel表格,並手動處理這一切。

OR:檢查出SQL Server Integration Services(SSIS) - 他們提供整潔的方式到SQL Server數據導出到的格式(包括Excel)衆多,而且他們還提供返回路由。您也可以從.NET應用程序輕鬆控制和執行SSIS包。

0

我可以想到兩種方法。首先是從Excel VBA(可以使用密碼保護)與SQL/Server建立ADO連接。當您在Excel中按下按鈕時,它會一次讀取一個記錄的電子表格數據並具有驗證邏輯,或者只是將其插入查詢上載到臨時表格,然後觸發器會查看數據並對其進行處理。這樣你就不必上傳任何文件。

我已經在VBA中使用ADO命令到SQL/Server,它們非常簡單,可靠且速度非常快。通過Google搜索找到很多示例來查找示例。這很棒,因爲您可以使用各種特定於Excel的VBA命令來創建記錄,然後更新或插入它或您需要執行的任何操作。

爲了安全起見,您可以限制用戶(連接字符串和密碼隱藏在VBA中) - 只需在特定數據庫中插入數據,即使密碼被VBA破解,也不會執行任何操作好,因爲他們只能插入。

第二種方法是創建一個普通的ASP上傳控件,它在完成時接受您的Excel文件。在ASP中有一個事件,您可以在文件上傳完成時運行ASP.Net代碼。這將看到上傳的Excel文件,通過用於閱讀Excel文件的普通.net命令(Excel自動化)讀取它,然後處理它,然後我想要刷新它或丟棄它。我不知道在服務器上是否有運行Excel自動化的複雜問題 - 可能是因爲它本質上是在Web服務器上運行Excel.Exe的版本(不是一個好主意)。

我相信你可以從ASP到Excel文件進​​行ADO連接,並對其執行SQL查詢。我已經成功完成了這一步,但不幸的是,它根據前幾個記錄來決定字段的類型,並且在將Excel文件作爲數據庫讀取時有時會導致很多問題。我想你可以編寫一些快速的VBA來將Excel數據輸出到CSV並上傳該CSV文件,以便Web服務器上的任何內容都不必嘗試讀取Excel文件。在VBA中,您甚至可以通過SendKeys和InternetExplorer自動化自動進行上傳。我已經完成了,它的工作非常好。出於安全原因,Sendkeys是填充文件上載文本框的唯一方法。

正如你所看到的第一個答案是更好的答案。這就是我會這樣做的原因,因爲您也可以用新數據刷新電子表格。

我其實覺得你在這裏發佈了一個非常有趣的問題。在Excel電子表格中編輯數據並將其發送回來要容易得多。我使用來自基本對象的Excel風格的網格控件(偉大的軟件)複製了很多功能,但是模擬電子表格需要很多編碼,並且仍然只是一個類似Excel的表單,而不是一個完整的電子表格。

如果你願意把MS-Access放在中間,這可以讓你解決很多這些複雜問題,但它本身就是一個額外的層。

相關問題