gpt4 book ai didi

excel - 在读/写模式下打开 Excel 文件的 VB 问题

转载 作者:行者123 更新时间:2023-12-04 20:57:02 25 4
gpt4 key购买 nike

背景:我正在使用 Microsoft.Office.Interop.Excel 库在我的 Windows 窗体程序中打开、操作和保存 excel 文件。由于我不会完全深入的原因,我需要在任何时候显示在屏幕上的信息最少,所以我使用 DataTables 和 DataGridViews 来操作存储在 excel 文件中的信息。我可以很好地提取和编辑信息,但我的问题是保存。

我的问题:

尝试使用 WorkBook.Save() 函数保存回 Excel 文件时,当我在 Excel 中打开文件时,更改不会反射(reflect)出来。作为测试,我尝试了 .SaveAs() 函数来查看发生了什么,并得到原始文件以只读模式打开的错误。我使用 .SaveCopyAs() 函数来确保我的信息被正确输出,并且保存的副本包含我所做的更改。

我已经尝试了所有我能找到的只读和保存属性的所有可能组合,以下两个属性似乎解决了大多数其他人的问题,但对我不起作用。

xlWorkBook = xlApp.Workbooks.Open(currFile, IgnoreReadOnlyRecommended:=True, ReadOnly:=False)

当我使用按钮和菜单项来操作程序时,我的代码分布在多个功能中,但它遵循与本网站的保存示例相同的工作流程,除了我设置了 xlApp.Visible = False : http://www.siddharthrout.com/2012/09/12/saving-and-closing-the-excel-file-savesave-as-method/ .

我会很感激任何帮助。

编辑:
忘了提一下,我正在使用 Excel 2010 和 Visual Studio 2015 以及 VB Windows 窗体应用程序模板。

最佳答案

我找到了我的问题的答案。通过移动 TnTinMn 围绕我的打开方法提供给我的代码行,我能够以读/写或只读模式可靠地打开文件。它不是 excel 运行的幽灵实例,至少不是真的:当文件仍然在同一个程序中使用另一种方法打开时,您无法以读/写模式打开文件。我找到的打开文件的方法看起来或多或少像这样(这是 非常 从我所拥有的版本中提取出来的版本,因此与我处理它时相比,它现在将是一个更明显的问题):

If openFileDialog1Result = System.Windows.Forms.DialogResult.OK Then
Try
myStream = openFileDialog1.OpenFile()

If myStream IsNot Nothing Then
wb = DirectCast(Marshal.BindToMoniker(currFile), Excel.Workbook) : wb.Application.Visible = True : wb.Application.UserControl = True : wb.Windows(1).Visible = True
'Do work
End If
Catch Ex As Exception
MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
Finally
' Check this again, since we need to make sure we didn't throw an exception on open.
If myStream IsNot Nothing Then
myStream.Close()
End If
End Try
End If

既然我知道问题出在哪里,我觉得如果我试图存储我正在通过 Excel.Workbook.Open() 打开的文件,这应该是显而易见的。或任何其他方法,而我仍然使用 openFileDialog1.OpenFile() 打开它,当然它只能以只读方式打开。不幸的是,我没有早点发现这一点,因为与之前的示例片段相比,我还有很多事情要做。我发现我什至不需要将流用于我的目的,我的代码现在遵循以下结构:
If openFileDialog1Result = System.Windows.Forms.DialogResult.OK Then
Try
currFile = openFileDialog1.FileName

wb = DirectCast(Marshal.BindToMoniker(currFile), Excel.Workbook) : wb.Application.Visible = True : wb.Application.UserControl = True : wb.Windows(1).Visible = True
Catch Ex As Exception
MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
End Try
End If

我感谢我收到的所有帮助,我很抱歉带你们去疯狂追逐。

关于excel - 在读/写模式下打开 Excel 文件的 VB 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com