我需要將數據從SQL Server 2014推送到Excel工作表中。由於紙張不會改變,我需要先清理紙張。SQL Server - 清除和填充Excel
我的查詢在底部。
注意 - 由於這種性質,我不能簡單地將數據拉到Excel中。
UPDATE似乎鎖定了Excel文件。我可以多次運行插入而不會出現問題,但UPDATE可防止進一步操作實際更改文件。
- 運行update:成功,單是清除
- 運行INSERT:失敗的SQL的執行沒有錯誤,但不填充文件
代碼:
UPDATE OPENROWSET ('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Workspace\WorkBook01.xlsx',
'SELECT col_01, col_01 FROM [Sheet1$]')
SET col_01 = NULL,
col_02 = NULL
WHERE col_01 IS NOT NULL;
INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Workspace\WorkBook01.xlsx',
'SELECT col_01, col_02 FROM [Sheet1$]')
SELECT col_01, col_01
FROM [dbo].[table_data];
編輯 - 其他細節 該代碼是由於ta的性質使用sk需要完成(文件結構沒有被我定義,但我需要使用它)。的要求概述如下:
- 有超過30 .XLSX文件,所有這些具有3個或更多個片材橫跨片
- 行引用存儲在每個文件(不包括外部「主數據」片材參考)
- 主數據片必須具有直接插入(例如不引用外部源的值)
我需要更新所有文件(「主數據」表,而無需使用外部基準)。使用上面的代碼是因爲我可以快速編寫SQL來爲所有文件執行此操作。
注意 - 我知道這將是容易得多,如果「主表」,只是從數據庫中抽取數據,或者如果他們都引用一個外部文件......這不是我的電話,但我確實需要維護工作表。
你可以使用SSIS嗎? http://stackoverflow.com/questions/8018502/how-to-overwrite-excel-destination-in-ssis –
如果您不首先運行更新,您的插入是否按預期工作?如果是這樣,您可以創建一個空白模板文件,並在運行插入腳本之前將模板文件複製到現有文件上。 –
您插入了多少行? – Eric