通过Microsoft.ACE.OLEDB从SQL Server更新Excel文件后公式无法自动更新的问题求助
通过Microsoft.ACE.OLEDB从SQL Server更新Excel文件后公式无法自动更新的问题求助
大家好,我最近在做一个SQL自动生成Excel文件的需求,用的是Microsoft.ACE.OLEDB.12.0驱动。我的步骤是先复制一份预先做好的Excel模板,然后把SQL临时表的数据插入到新文件的Data工作表,之后还要在Summary工作表设置比率分母,但现在卡在了第一步之后的公式更新问题上。
具体的SQL代码如下:
declare @someparam varchar(255) = 'Foo' declare @filename varchar(512) declare @path varchar(2000) declare @template varchar(2000) declare @cmd varchar(4000) declare @sql varchar(4000) -- 生成带参数和日期的文件名 set @filename = concat('Some Doc - ', @someparam, ' - ', convert(varchar, getdate(), 112), '.xlsx') set @path = '\\path\to\file' set @template = '\\path\to\template.xlsx' -- 复制模板到目标路径 set @cmd = 'copy /Y "' + @template + '" "' + @path + '\' + @filename + '"' exec xp_cmdshell @cmd -- 插入数据到Excel的Data工作表 set @sql = 'insert into OPENROWSET( ''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database=' + @path + '\' + @filename + ';'', ''Select * From [Data$]'' ) select * from ##some_data' exec(@sql)
现在数据能成功插入到Data表,但Summary工作表里那些依赖Data表数据的公式完全不会自动计算,打开Excel后要么显示模板里的旧值,要么得手动按刷新才会出正确结果。我确认过模板里的自动计算是开启状态的,但通过OLEDB写入数据后就是不触发计算。
有没有前辈遇到过这种情况?有没有办法让Excel在数据更新后自动触发公式计算?或者有没有其他的处理思路?
备注:内容来源于stack exchange,提问作者Xingzhou Liu
相关产品推荐
相关产品推荐

