我需要将数据从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