///
/// 导出记录
///
///
public async Task DownloadRecord()
{
//数据源
var model = new PracticalRecordModel();
// 方法
var doc = EquipWordHelper.ExportPracticalRecordReceipt(model);
using (MemoryStream ms = new MemoryStream())
{
doc.Write(ms);
// 文件名
string fileName = $"{DateTime.Now.ToString("yyyy-MM-dd")}.docx";
return File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
}
处理方法:ExportPracticalRecordReceipt
public static XWPFDocument ExportPracticalRecordReceipt(PracticalRecordModel model, int type = 1)
{
var template = Folder + "PracticalRecord.docx";
using (FileStream stream = new FileStream(template, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
XWPFDocument doc = new XWPFDocument(stream);
// 注意-模板的标题要和这里一样,模板的括号是英文的
doc.Tables[0].Rows[0].GetTableCells()[0].Paragraphs[0].Runs[0].ReplaceText("[标题]", "项目" + model.JobName + "实操考核记录");
doc.Tables[0].Rows[1].GetTableCells()[1].Paragraphs[0].Runs[0].ReplaceText("[总包单位]", model.OrgName);
doc.Tables[0].Rows[1].GetTableCells()[3].Paragraphs[0].Runs[0].ReplaceText("[考核人员]", model.KhName);
doc.Tables[0].Rows[1].GetTableCells()[5].Paragraphs[0].Runs[0].ReplaceText("[面试日期]", model.InterviewTimeStr);
doc.Tables[0].Rows[2].GetTableCells()[1].Paragraphs[0].Runs[0].ReplaceText("[分包单位]", model.ProjectName);
doc.Tables[0].Rows[2].GetTableCells()[3].Paragraphs[0].Runs[0].ReplaceText("[实操人员]", model.ScName);
doc.Tables[0].Rows[2].GetTableCells()[5].Paragraphs[0].Runs[0].ReplaceText("[考核工种]", model.JobName);
int RowsIndex = 5;
ExportPracticalRecordListReceiptFill(model, ref doc, ref RowsIndex);
foreach (var image in model.AssessMentPaths)
{
XWPFParagraph par = doc.Tables[0].Rows[RowsIndex].GetTableCells()[0].Paragraphs[0];
XWPFRun run = par.CreateRun();
byte[] byData = GetBytesFromUrl(image);
using (MemoryStream ms = new MemoryStream(byData))
{
run.AddPicture(ms, (int)PictureType.JPEG, "10.jpg", (int)(500.0 * 9525), (int)(400.0 * 9525));
}
}
var restr = "";
doc.Tables[0].Rows[RowsIndex + 1].GetTableCells()[0].Paragraphs[1].Runs[0].ReplaceText("[实操考核结论]", restr);
return doc;
}
}
///
/// 处理动态数据
///
///
///
///
public static void ExportPracticalRecordListReceiptFill(PracticalRecordModel model, ref XWPFDocument doc, ref int RowsIndex)
{
var list = model.PracticalRecordDetailList.OrderBy(x => x.Sort).ToList();
var sort = 1;
foreach (var item in list)
{
if (RowsIndex != 5)
{
CT_Row m_NewRow = new CT_Row();
var MyRow = new XWPFTableRow(m_NewRow, doc.Tables[0]);
// 添加行--AddRow 有2种用法,下面使用的是在文档中间插入,doc.Tables[0].AddRow(Myrow);这种是默认在文档末尾添加
doc.Tables[0].AddRow(MyRow, RowsIndex);
var cell = MyRow.CreateCell();
var cttc = cell.GetCTTc();
var cp = cttc.AddNewTcPr();
//添加列
cp.gridSpan = new CT_DecimalNumber();
cell = MyRow.CreateCell();
cttc = cell.GetCTTc();
cp = cttc.AddNewTcPr();
cp.gridSpan = new CT_DecimalNumber();
cell = MyRow.CreateCell();
cttc = cell.GetCTTc();
cp = cttc.AddNewTcPr();
cp.gridSpan = new CT_DecimalNumber();
cp.gridSpan.val = "3"; //合并列
cell = MyRow.CreateCell();
cttc = cell.GetCTTc();
cp = cttc.AddNewTcPr();
cp.gridSpan = new CT_DecimalNumber();
cell = MyRow.CreateCell();
cttc = cell.GetCTTc();
cp = cttc.AddNewTcPr();
cp.gridSpan = new CT_DecimalNumber();
}
//序号
XWPFParagraph para = doc.Tables[0].Rows[RowsIndex].GetTableCells()[0].Paragraphs[0];
para.Alignment = ParagraphAlignment.CENTER;
XWPFRun run = para.CreateRun();
run.SetText(sort.ToString());
run.IsBold = true;
sort++;
// 考核项目
para = doc.Tables[0].Rows[RowsIndex].GetTableCells()[1].Paragraphs[0];
para.Alignment = ParagraphAlignment.CENTER;
run = para.CreateRun();
run.SetText(item.ExamProject);
run.IsBold = true;
// 考核标准
para = doc.Tables[0].Rows[RowsIndex].GetTableCells()[2].Paragraphs[0];
para.Alignment = ParagraphAlignment.CENTER;
run = para.CreateRun();
run.SetText(item.ExamStandard);
run.IsBold = true;
// 结论-合格
para = doc.Tables[0].Rows[RowsIndex].GetTableCells()[3].Paragraphs[0];
para.Alignment = ParagraphAlignment.CENTER;
run = para.CreateRun();
run.SetText(item.IsQualified == 0 ? "√" : "");
run.IsBold = true;
// 结论-不合格
para = doc.Tables[0].Rows[RowsIndex].GetTableCells()[4].Paragraphs[0];
para.Alignment = ParagraphAlignment.CENTER;
run = para.CreateRun();
run.SetText(item.IsQualified == 1 ? "√" : "");
run.IsBold = true;
RowsIndex++;
}
}
文件模板
导出结果