【问题标题】:Trying to open a excel template and rename or save to new location尝试打开 Excel 模板并重命名或保存到新位置
【发布时间】:2010-04-25 13:28:12
【问题描述】:

当我尝试以下操作时收到以下错误消息:

   Dim XL As New Microsoft.Office.Interop.Excel.Application

    XL.Visible = True
    XL.Workbooks.Open(XLTemplatePath)
    XL.SaveWorkspace(XLSaveReportPath)
    XL.Workbooks.Close()
    XL.Workbooks.Open(XLSaveReportPath)

“Excel 无法打开文件 'ContactReports.xlsx',因为文件格式或文件扩展名无效。验证文件没有损坏并且文件扩展名与文件格式匹配。”

我想做的是打开一个 XLTemplatePath 的 excel 文件,然后在 XLSaveReportPath 处重命名或保存该文件,然后使用该重命名/保存的文件来填写报告。

我在 VB.NET 中使用 Visual Studio 2008

【问题讨论】:

  • xlsx.... 这不是较新的 XML 格式吗?您确定您的版本可以处理 XML 文件格式吗?

标签: vb.net excel report


【解决方案1】:

saveworkspace 方法不保存文件。即使您将工作区保存为 xls 的文件命名,它也会以 xlw 格式保存工作区。当您尝试打开文档时,您正在打开一个工作空间并收到错误消息。

要使这项工作正常工作,您需要获取工作簿,以便您可以使用工作簿而不是应用程序。

Dim XL As New Microsoft.Office.Interop.Excel.Application
Dim XLWorkbook as new Microsoft.Office.Interop.Excel.Workbook  

XL.Visible = True  
XLWorkbook = XL.Workbooks.Open(XLTemplatePath)  
XLWorkbook.SaveAs(XLSaveReportPath)  
XL.Workbooks.Close()  
XL.Workbooks.Open(XLSaveReportPath)

应该做的伎俩。如果您有任何问题,请告诉我们。

以下是供您查看的 MSDN 参考:

Application.SaveWorkspace Method

Workbook.SaveAs Method

【讨论】:

    【解决方案2】:

    我使用以下 Visual Basic 代码来处理 Microsoft Excel 2003。主要区别(Visual Basic 6 与 VB.Net 不同)是我使用 Workbook 对象的 SaveAs 方法而不是 SaveWorkspace 方法。

    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = True
    Set ExcelDoc = ExcelApp.Workbooks.Open(FileName:=XLTemplatePath, ReadOnly:=True)
    ExcelDoc.SaveAs(FileName:=XLSaveReportPath)
    ExcelDoc.Close(SaveChanges:=False)
    ExcelApp.Workbooks.Open(FileName:=XLSaveReportPath)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-30
      • 2011-03-20
      • 1970-01-01
      • 2017-07-07
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多