我想知道我是否需要做一些事情(线程等)来防止我的文件生成失败,因为多个用户试图同时运行生成过程。
如果有潜在的问题,我想知道避免它的任何想法。
我的过程概述。
- 用户单击按钮以启动该过程。
- 数据是从数据源收集的/虚拟化用于测试。
- Template.xls 已打开
- 数据被插入到打开的模板中。
- 为打开的 excel 文件调用 SaveAs。
- 重复该过程,直到创建所有需要的文件。
- 所有文件压缩在一起
- 如果过程成功完成并提示用户下载文件的 zip,则会通知用户。
注意:由于目前这是概念证明,因此存在硬编码的文件名值。
请参阅下面的生成代码
private Boolean GenerateExcelFile(int filenum, int totalfiles, int Year)
{
String 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;
}