如何在内存中使用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。