vb.net - 尝试打开 Excel 模板并重命名或保存到新位置

标签 vb.net excel report

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

   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

最佳答案

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

关于vb.net - 尝试打开 Excel 模板并重命名或保存到新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537894/

相关文章:

asp.net - 如何让asp.net下载动态csv

c# - 为什么我们不能将常量变量定义为static?

javascript - 复选框总是返回 false

excel - Dir() 和 FSO 都缺少 1 个文件

reporting-services - SSRS Report Builder 3.0 排名/自动递增

drop-down-menu - 如何更改 Cognos Report 文本框中的最高值名称?

sql - 粘贴较大的多行字符串(大约1500行)后,Visual Studio 2010崩溃

vba - 事件依赖于带公式的单元格

vba - 在一张纸上复制静态范围,然后根据单元格中的单个值将动态范围粘贴到另一张纸上

php - 生成 PHPUnit 报告(失败和通过的测试)