在阅读之前需要打开并保存Excel文件

我有一个方法是我创build一个Excelsheet。 当创build文件时,我需要打开它并手动将其保存在Excel中,然后才能使用Excel Data Reader读取它。 如果我打开并保存完全相同的文件而不改变任何东西,我可以阅读它,就像我无法工作。 有谁知道我可以如何:

a)在创build文件时使用EPPlus正确保存?

要么

b)打开已经创build的文件,并使用C#保存,然后再尝试读取它?

我的创build方法:

public void CreateAnnuityExcelSheet(List<Calculation> cList, FormCollection form, int DTCyear) { string fileName = "test"; string path = @"C:\ExcelFiles\" + fileName + ".xlsx"; //Path for the file FileInfo info = new FileInfo(path); info.Directory.Create(); //If C:\ExcelFiles does not exist, create it if (!info.Exists) { using (ExcelPackage package = new ExcelPackage(info)) { ExcelWorksheet ws = package.Workbook.Worksheets.Add(fileName); //Filling the worksheet with values here... package.SaveAs(info); } } } 

我的阅读方法:

 [HttpPost] public ActionResult ShowExcelFile(GetExcel model) { List<Calculation> cList = new List<Calculation>(); DataSet result = null; var file = model.Files[0]; if (file != null && file.ContentLength > 0) { // .xlsx IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(file.InputStream); reader.IsFirstRowAsColumnNames = true; result = reader.AsDataSet(); reader.Close(); var PV = Convert.ToDecimal(data.Table.Rows[1][6]); //Works fine if the file is opened and saved in Excel. Else null.. //Work with the dataset here. When the file is not opened and saved it gets null everywhere. Else it works fine } return View("ShowExcelFile", model); } 

我也尝试使用WriteAllBytes而不是使用package.SaveAs():

 byte[] data = package.GetAsByteArray(); System.IO.File.WriteAllBytes(path, data); 

这得到了我完全相同的结果。 我仍然需要手动打开并保存文件。