首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >刷新Excel工作簿,该工作簿使用Oracle数据库中的外部数据,无需用户干预

刷新Excel工作簿,该工作簿使用Oracle数据库中的外部数据,无需用户干预
EN

Stack Overflow用户
提问于 2015-10-08 14:14:00
回答 1查看 1.2K关注 0票数 1

我创建了一个excel文件,该文件与Oracle数据库有外部连接。此excel工作簿有一个带有枢轴表的工作表,该表允许其他人从数据中提取丰富的信息/含义。

我们不希望在希望使用此excel工作簿的每个用户的计算机上安装Oracle客户端,因此我们将excel工作簿分成两个文件。一种是外部数据,另一种是枢轴表,它用数据引用其他excel工作簿。

我们需要excel工作簿中的数据与数据定期刷新,而不需要有人在每次需要刷新数据时手动打开excel工作簿。对这件事的最佳方式有什么建议吗?

例如,可能运行由Windows任务调度程序调用的脚本,该脚本将具有数据源更新?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 18:11:14

在注释中,建议使用作为选项。作为一种选择,我开始对此进行一些研究,但我需要一个非常快速的解决方案,所以我最后做了以下工作:

我设法在网上找到了一些文章,其中有一些代码可以帮助我找到一个解决方案。http://www.mattmasson.com/2013/03/refresh-an-excel-workbook-with-a-script-task/

https://social.msdn.microsoft.com/Forums/vstudio/en-US/8bce17fb-eacd-4df3-8c10-bf8ae8a93c55/c-code-to-refresh-excel-data?forum=csharpgeneral

这两种代码非常相似。它是用c#编写的,如下所示:

代码语言:javascript
复制
        var filename = "SomePath\\Book2.xlsx";
        object missingValue = System.Reflection.Missing.Value;
        var excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
        excelApp.DisplayAlerts = false;
        var Workbook = excelApp.Workbooks.Open(filename, missingValue, missingValue,
            missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue,
            missingValue, missingValue, missingValue, missingValue, missingValue);
        Workbook.RefreshAll();
        System.Threading.Thread.Sleep(30000);

        Workbook.Save();
        Workbook.Close(false, filename, null);
        excelApp.Quit();
        Workbook = null;

        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);

对Thread.Sleep()的调用确保在保存和关闭工作簿之前刷新数据。如果在刷新完成之前调用Workbook.Save(),则不会更新数据。必须有更好的方法来做这件事,但我还不知道是什么。

我只是使用Windows任务调度程序调用此脚本在特定时间运行。这不是最优雅的解决方案,但有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33018330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档