Je me request si je dois faire quelque chose (enracinant, etc.) pour éviter que ma génération de file ne soit due à plus d'un user essayant d'exécuter simultanément le process de génération.
S'il y a un problème potentiel, je souhaite connaître toutes les idées pour éviter cela.
Aperçu de ma procédure.
note: les valeurs du nom de file codé sont présentes car il s'agit d'une preuve de concept en ce moment.
Voir le code de génération ci-dessous
private Boolean GenerateExcelFile(int filenum, int totalfiles, int Year) { Ssortingng TemplateFilename = "C:\\exceldocs\\Templates\\OSHA300_Template.xls"; try { Excel._Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet; //Start Excel and get Application object. oXL = new Excel.Application(); oXL.Visible = false; //Open the workbook template. //oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); oWB = (Excel._Workbook)(oXL.Workbooks.Open(TemplateFilename)); oSheet = (Excel._Worksheet)oWB.ActiveSheet; oSheet.Cells[3, 11] = Year; oSheet.Cells[PAGEOFROW, PAGEOFCOL] = filenum + " of " + totalfiles; int currentexcelrow = STARTROW; foreach (OSHArow row in this) { FillOutRow(oSheet, row, currentexcelrow++); if (currentexcelrow == 38) { //break; } } FillOutSummaryRow(oSheet); File.Delete("C:\\exceldocs\\OshaOutput\\OSHA300_TestResult" + filenum + ".xls"); oWB.SaveAs("C:\\exceldocs\\OshaOutput\\OSHA300_TestResult" + filenum + ".xls"); oWB.Close(true); } catch (Exception e) { //TODO: configure an exception log. throw e; return false; } return true; }
Vous préférez utiliser quelque chose comme la bibliothèque OpenXml. Vous pouvez écrire des feuilles Excel sur le vol vers les stream (puis returnner les stream en tant que FileResults pour l'user à download sur un file XLSX).