整个部分的原理是这样,由于通过farpoint for asp.net无法导出员工登记表的照片,因此我在后台通过farpoint for winform做了一个生成员工登记表的操作,然后将其中的内容全部导出到服务器上的临时文件夹中,提供下载。以下仅粘贴关键部分的代码:
1、调用生成winform员工登记表的代码
FormToStr fts = new FormToStr(jID, Convert.ToInt32(fID));
fts.DjbRep(500);//仅对前五百行按照条件生成数据。
2、构造方法
public FormToStr(string empId, int fileId)
{
string excelPath = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + @"Temp/" + fileId + ".xls";
SheetView sheet = new SheetView();
fpspread.Sheets.Add(sheet);
fpspread.ActiveSheet = sheet;
fpspread.OpenExcel(excelPath);
this.empID = new string[] { empId };//人员ID
this.fileID = fileId;//表格ID
this.strPath = @"Temp/" + fileId + "_" + GetRandomString() + ".xls";//生成的EXCEL文件的完整路径
}
3、循环farpoint for winform控件的内容行列,根据其中的条件定义替换成相应的员工信息
public void DjbRep(int rowEnd)
{
for (int j = 0; j < rowEnd; j++)
{//外层循环行
for (int i = 0;
i < fpspread.ActiveSheet.Columns.Count;
i++)
{
if (fpspread.ActiveSheet.Cells[j, i].Text.Contains("[") && fpspread.ActiveSheet.Cells[j, i].Text.Contains("]"))
{
Rep(j, i, empID[0]);
}
}
}
}
4、Rep方法不再粘贴,仅仅是对每个单元格进行内容替换。
5、保存到服务器
public static string SaveEx(string strFileName)
{
string fileName = AppDomain.CurrentDomain.BaseDirectory + strFileName;
fpspread.Sheets[0].Protect = false;
fpspread.SaveExcel(fileName, FarPoint.Excel.ExcelSaveFlags.SaveAsViewed);//FarPoint.Excel.ExcelSaveFlags.NoFlagsSet);
return fileName;
} |