簡體   English   中英

使用查詢將數據從SQL Server表傳輸到Excel,反之亦然

[英]Transfer data from SQL Server table using query to Excel and vice-versa

我想使用asp.net 3.5中的3層體系結構將數據從SQL Server表傳輸到Excel工作表。 用戶在Excel工作表中進行了必要的更改后,我希望Excel工作表能夠上載並更新表中的數據,並驗證正確的數據。

您可以設置一個SSIS包以從Excel導入數據

您可以查看庫(大量的庫)以編程方式讀取和寫入Excel工作表,然后手動處理所有這些工作。

或者:檢查SQL Server集成服務 (SSIS)-它們提供了將SQL Server數據導出為多種格式(包括Excel)的巧妙方法,並且還提供了返回路徑。 您也可以從.NET應用程序輕松控制和執行SSIS包。

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

我已經在VBA中將ADO命令用於SQL / Server,它們非常簡單,可靠且異常快速。 通過Google搜索可以找到大量示例。 很棒是因為您可以使用各種特定於Excel的VBA命令來構建記錄,然后更新或插入記錄或執行任何所需的操作。

為了安全起見,您可以將用戶(連接字符串和密碼隱藏在VBA中)限制為僅在特定數據庫中插入數據,因此即使密碼從VBA中以某種方式被黑客入侵,也不會給任何人帶來任何好處僅插入。

第二種方法是創建一個普通的ASP上傳控件,該控件在完成后會接受您的Excel文件。 ASP中有一個事件,文件上傳完成后,您可以在其中運行ASP.Net代碼。 那將看到上傳的Excel文件,通過普通的.net命令讀取該文件以讀取Excel文件(Excel自動化),進行處理,然后我猜測是刷新還是丟棄它。 我不知道在服務器上運行Excel自動化是否存在復雜性-可能是因為本質上它在Web服務器上運行的是Excel.Exe版本(不是一個好主意)。

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

如您所見,第一個答案是更好的答案。 我就是這樣做的,因為那樣您還可以用新數據刷新電子表格。

我實際上認為您在這里發布了一個非常有趣的問題。 在Excel電子表格中編輯數據並將其發送回去要容易得多。 我已經使用了來自Essentialobjects的Excel樣式的網格控件來復制了很多功能-很棒的軟件,但是要模擬電子表格需要很多編碼,但它仍然只是Excel形式,而不是完整的電子表格。

如果您願意將MS-Access放在中間,那么可以避免很多這些麻煩,但它本身就是額外的一層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM