我创建了一个excel文件,该文件与Oracle数据库有外部连接。此excel工作簿有一个带有枢轴表的工作表,该表允许其他人从数据中提取丰富的信息/含义。
我们不希望在希望使用此excel工作簿的每个用户的计算机上安装Oracle客户端,因此我们将excel工作簿分成两个文件。一种是外部数据,另一种是枢轴表,它用数据引用其他excel工作簿。
我们需要excel工作簿中的数据与数据定期刷新,而不需要有人在每次需要刷新数据时手动打开excel工作簿。对这件事的最佳方式有什么建议吗?
例如,可能运行由Windows任务调度程序调用的脚本,该脚本将具有数据源更新?
谢谢。
发布于 2015-10-08 18:11:14
在注释中,建议使用作为选项。作为一种选择,我开始对此进行一些研究,但我需要一个非常快速的解决方案,所以我最后做了以下工作:
我设法在网上找到了一些文章,其中有一些代码可以帮助我找到一个解决方案。http://www.mattmasson.com/2013/03/refresh-an-excel-workbook-with-a-script-task/
和
这两种代码非常相似。它是用c#编写的,如下所示:
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任务调度程序调用此脚本在特定时间运行。这不是最优雅的解决方案,但有效。
https://stackoverflow.com/questions/33018330
复制相似问题