如何在内存中使用excel文件

目前我的stream程如下。 查询数据库 – >本地保存文件 – >使用Excel Interop DLL打开工作簿,使更改工作簿,另存为使用Excel Interop DLL。 保存原因是因为我需要一些额外的设置,所以文件没有设置为只读。

我遇到的问题是它本地保存两次。 第一次是好的,第二次会出现一个提示,询问我是否想重写。 我想知道如何删除保存文件本地进程,并在内存中使用它? 如果我能够使用内存中的文件,我会提示Save As问我是否要覆盖以前的文件。

码:

 //Save File Locally System.IO.File.WriteAllBytes(saveFileDialog.FileName, Report.FileArray); var fileLocation = saveFileDialog.InitialDirectory + saveFileDialog.FileName; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); // Open Workbook Using Excel Interop Dll Workbook wb = excel.Workbooks.Open(fileLocation); Worksheet ws1 = wb.Worksheets.get_Item("English"); //Make Changes To WorkBook ws1.Range["E5"].Value = StartDate; ws1.Range["G5"].Value = EndDate; // Save AS Using Excel Interop With shared settings to remove read only access wb.SaveAs(fileLocation, AccessMode: XlSaveAsAccessMode.xlShared); Process.Start(fileLocation); 

你最好禁用提示,我记得这是可能的,但它意味着很多昂贵的代码…

尝试这个

 Microsoft.Office.Interop.MSProject.Application msProjectApp = new Microsoft.Office.Interop.MSProject.Application(); msProjectApp.DisplayAlerts = false; 

编辑

 Microsoft.Office.Interop.Excel.Application msProjectApp = new Microsoft.Office.Interop.Excel.Application(); msProjectApp.Visible = true; //show the application and not need to start a process msProjectApp.DisplayAlerts = false; 
 //Save File Locally System.IO.File.WriteAllBytes(saveFileDialog.FileName, Report.FileArray); var fileLocation = saveFileDialog.InitialDirectory + saveFileDialog.FileName; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); // Open Workbook Using Excel Interop Dll Workbook wb = excel.Workbooks.Open(fileLocation); Worksheet ws1 = wb.Worksheets.get_Item("English"); //Make Changes To WorkBook ws1.Range["E5"].Value = StartDate; ws1.Range["G5"].Value = EndDate; // Save Only wb.Save(); 

删除Process.Start

 excel.Visible = true; excel.DisplayAlerts = false; 

如果你“拥有”工作簿,并可以预先设置好播放,并只加载数据,我发现OleDB访问SQL连接方法是一个更好的方式来加载原始数据到SQL。