Я использовал следующий код для создания файла Excel.
[HttpPost]
public ActionResult GenerateReport(string ReportPractice, string ReportMarket)
{
Share_Template ST = new Share_Template();
DataSet ds = new DataSet();
if (ReportPractice != "")
{
ds = ST.GenerateReport("PracticeReport", ReportPractice, user.MyProperty.ToLower());
}
else
{
ds = ST.GenerateReport("MarketReport", ReportMarket, user.MyProperty.ToLower());
}
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
//Create an Excel workbook instance and open it from the predefined location
Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Type.Missing);
foreach (System.Data.DataTable table in ds.Tables)
{
//Add a new worksheet to workbook with the Datatable name
Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add();
excelWorkSheet.Name = "Test Sheet";
for (int i = 1; i < table.Columns.Count + 1; i++)
{
excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
}
for (int j = 0; j < table.Rows.Count; j++)
{
for (int k = 0; k < table.Columns.Count; k++)
{
excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
}
}
}
string FileName = "Report " + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".xls";
string fullPath = Path.Combine(Server.MapPath("~/temp"), FileName);
ST.CheckFile(fullPath);
FileStream memoryStream = new FileStream(fullPath, FileMode.Create);
memoryStream.Dispose();
return new JsonResult()
{
Data = FileName
};
}
Файл загружается без проблем, но когда я пытаюсь открыть файл, появляется следующее всплывающее окно.
"Excel не может открыть файл'thing.xlsx ', так как формат файла или расширение файла недействительны. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла."
Даже если я нажимаю «ок», иногда Excel отображает лист, а иногда я даже не вижу лист.