现在我正在使用 System.Diagnostics.Process.Start(fileInfo); 打开 excel。
将我的包保存到文件后打开它。
是否可以打开excel而无需将文件保存到某个位置?我希望用户决定是否保存文件。
现在我正在使用 System.Diagnostics.Process.Start(fileInfo); 打开 excel。
将我的包保存到文件后打开它。
是否可以打开excel而无需将文件保存到某个位置?我希望用户决定是否保存文件。
如果您使用 EPPlus(或任何其他直接生成文件的库)自己生成文件,则需要先保存它,然后才能在 Excel 中打开它。我建议将其保存在临时目录中,然后将其显示给用户并让他们选择如何处理它。
如果使用 Office 自动化生成文件,则可以在保存之前将其显示给用户。
我认为这个答案将有助于新开发人员。我认为在不保存的情况下查看 Excel 的最佳选择是 Microsoft.Office.Interop.Excel
打开 Nuget 包控制台Install-Package Microsoft.Office.Interop.Excel
这里创建Excel文件是Excel官方文档
在填写 Excel 文件的最后只需键入app.Visible = true;
app 是对象名称
我知道这已经晚了,但我遇到了同样的问题。
我曾经使用Microsoft.Office.Interop.Excel
将数据导出到xlsx
文件而不保存它。它会以Book1.xlsx的形式很好地呈现给最终用户,他们可以保存或关闭它而不需要保存。
我还迁移到EPPlus以提高我的导出速度,因此,正如您所经历的那样,如果不先保存打开的文件,就无法将其呈现给最终用户。
我采用的方法是使用SaveFileDialog组件在创建文件之前提示用户输入名称。EPPlus
这至少允许最终用户确定文件应该保存在哪里,而不是使用“硬编码”目录。
Private Sub btnExportXlsxEPPlus_Click(sender As Object, e As EventArgs) Handles btnExportXlsxEPPlus.Click
Try
Dim filInf As FileInfo = New FileInfo(GetFileToSave())
Using excelPackage As ExcelPackage = New ExcelPackage
excelPackage.Workbook.Properties.Author = "enLIGHTen"
excelPackage.Workbook.Properties.Title = "enLIGHTen Report"
excelPackage.Workbook.Properties.Subject = "enLIGHTen export data"
excelPackage.Workbook.Properties.Created = Date.Now
Dim worksheet As ExcelWorksheet = excelPackage.Workbook.Worksheets.Add("Sheet 1")
worksheet.Cells("A1").Value = "My EPPlus spreadsheet!"
worksheet.Cells(1, 2).Value = "This is cell B1!"
excelPackage.SaveAs(filInf)
End Using
Using excelPackage As ExcelPackage = New ExcelPackage(filInf)
Dim firstWorksheet As ExcelWorksheet = excelPackage.Workbook.Worksheets(1)
Dim namedWorksheet As ExcelWorksheet = excelPackage.Workbook.Worksheets("SomeWorksheet")
Dim anotherWorksheet As ExcelWorksheet = excelPackage.Workbook.Worksheets.FirstOrDefault(Function(x) x.Name Is "SomeWorksheet")
Dim valA1 As String = firstWorksheet.Cells("A1").Value.ToString
Dim valB1 As String = firstWorksheet.Cells(1, 2).Value.ToString
excelPackage.Save()
End Using
Dim proc As Process
Try
proc = New Process()
Process.Start(filInf.FullName)
Catch ex As Exception
MsgBox("File cannot be opened", MsgBoxStyle.Information, "Cannot open file")
End Try
Catch
End Try
End Sub
Public Function GetFileToSave()
Dim strFilename As String = ""
SaveFileDialog1.Filter = "Excel Workbook (*.xlsx)|*.xlsx"
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = SaveFileDialog1.FileName
Return strFilename
End If
End Function