如何在内存中使用excel文件

本文关键字:excel 文件 内存 | 更新日期: 2023-09-27 18:03:53

目前我的流程如下。查询数据库->本地保存文件->使用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);

如何在内存中使用excel文件

您最好禁用提示,据我所知,这是可能的,但它意味着大量的恶意代码。。。

试试这个

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();

删除进程。启动

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

如果您"拥有"工作簿,并且可以事先将其设置为美观,并且只加载数据,我发现OleDB Access SQL连接方法是将原始数据加载到SQL中的更好方法。