首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过c#刷新并保存excel文件

通过c#刷新并保存excel文件
EN

Stack Overflow用户
提问于 2008-12-25 13:57:27
回答 4查看 11.5K关注 0票数 3

我使用以下代码打开、刷新、保存和关闭excel文件:

代码语言:javascript
复制
Application excelFile = new Application();               
Workbook theWorkbook = excelFile.Workbooks._Open(Environment.CurrentDirectory + "/WebGate", 0, false, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value, true, false, System.Reflection.Missing.Value, false);    
Sheets sheets = (Sheets)theWorkbook.Worksheets;    
theWorkbook.RefreshAll();    
theWorkbook.Save();    
excelFile.Quit();

问题是refresh和save命令之间存在冲突,因为文件是在后台(我猜)刷新时保存的,有人能帮我解决这个问题吗?我需要知道如何才能知道刷新过程何时完成或任何其他指示,这些指示将帮助我决定何时保存文件而不影响刷新过程

EN

回答 4

Stack Overflow用户

发布于 2008-12-26 21:05:01

我不熟悉C#,但我擅长Excel VBA。这里的问题是,大多数透视表都会将BackgroundQuery属性设置为True,从而使透视表异步刷新,以便最终用户使用时Excel文件可以响应。如果您在处理文件时没有添加任何新的透视表,那么您可以通过取消选中外部数据选项下的透视表->表设置->后台查询中的BackgroundQuery来修复文件。如果要添加数据透视表,则需要将此属性设置为false,如下所示

代码语言:javascript
复制
Dim oPivot As PivotTable
set oPivot=worksheets("xyz").PivotTables("Pivot1") 
oPivot.PivotCache.BackgroundQuery = False

如果您不确定要修复哪个表,并且您的excel中有许多表,则使用Excel VBA中的以下代码来修复它。

代码语言:javascript
复制
Public Sub FixPivotTables()
    Dim oPivot As New PivotTable, oSheet As Worksheet
    For Each oSheet In ThisWorkbook.Worksheets
        For Each oPivot In oSheet.PivotTables
            oPivot.PivotCache.BackgroundQuery = False
        Next
    Next
End Sub
票数 4
EN

Stack Overflow用户

发布于 2008-12-26 20:11:35

再一次,我看了文档,下面是我能说的。

获取正在刷新的QueryTable对象。它有一个名为"AfterRefresh“的事件,您可以使用它来执行任何操作。

此外,不对工作簿执行刷新,而是对特定的QueryTable执行刷新(除非您有多个QueryTables)。QueryTable有一个Refresh方法,它接受一个名为BackGroundQuery的布尔参数,您可以将该参数设置为False。

我猜,这将同步查询记录。

这对你有效吗?

票数 3
EN

Stack Overflow用户

发布于 2008-12-25 18:43:28

Eran,我是根据我对文档的理解来发布这篇文章的。

我假设您正在使用数据透视表&它使用了某种类型的查询。

尝试使用Workbook对象的PivotTableCloseConnection &看看是否可以在其中调用Save。

在Excel2007中,应用程序对象有AfterCalculate事件--这也很有用。

如何模拟这种情况?

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

https://stackoverflow.com/questions/392818

复制
相关文章

相似问题

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