public ResultResponse<string[]> PrintStudyRecords([FromBody]StudyInfo info)
{
ResultResponse<string[]> ret = new ResultResponse<string[]>();
if (info.ProjectId <= )
{
ret.Flag = false;
return ret;
}
var project = ProjectContract.GetFilterProject(p => p.Id == info.ProjectId).FirstOrDefault();
if (project == null)
{
ret.Flag = false;
return ret;
}
var trainTarget = TrainTargetContract.GetFilterTrainTargets(t => t.Id == project.TrainTargetId).FirstOrDefault();
var studyRecords = StudyRecordsContract.GetList(s => s.ProjectId == info.ProjectId && s.IsFinish && !s.IsDelete).ToList();
Document doc;
using (var stream = System.IO.File.OpenRead(HttpContext.Current.Server.MapPath("/Content/学时记录.docx")))
{
doc = new Document(stream);
}
doc.Range.Replace(string.Format("${0}$", "Name"), LoginUser.Name, false, false);
doc.Range.Replace(string.Format("${0}$", "PersonalId"), LoginUser.PersonalId, false, false);
doc.Range.Replace(string.Format("${0}$", "Sex"), string.IsNullOrWhiteSpace(LoginUser.Sex) ? "" : LoginUser.Sex, false, false);
doc.Range.Replace(string.Format("${0}$", "PhoneNum"), string.IsNullOrWhiteSpace(LoginUser.Tel) ? "" : LoginUser.Tel, false, false);
doc.Range.Replace(string.Format("${0}$", "Company"), string.IsNullOrWhiteSpace(project.Company) ? "" : project.Company, false, false);
doc.Range.Replace(string.Format("${0}$", "TrainTargetName"), trainTarget != null ? trainTarget.TrainName : "", false, false);
doc.Range.Replace(string.Format("${0}$", "AllHours"), studyRecords.Count().ToString(), false, false);
        //获取指定表格 2指的是表格下标,一共有三个,我需要改变内容的是第三个表格
Table tableRecord = (Table)doc.GetChild(NodeType.Table, , true);
if (tableRecord == null)
{
var op = new ImageSaveOptions(SaveFormat.Jpeg);
op.PrettyFormat = true;
ret.Result = new string[doc.PageCount];
for (var page = ; page < doc.PageCount; page++)
{
op.PageIndex = page;
using (var ms = new MemoryStream())
{
doc.Save(ms, op);
ret.Result[page] = "data:image/jpeg;base64," + Convert.ToBase64String(ms.GetBuffer());
}
}
ret.Flag = false;
return ret;
}
if (studyRecords.Count() > )
{
for (int i = ; i < studyRecords.Count - ; i++)
{
//克隆指定行
Row clonedRow = (Row)tableRecord.LastRow.Clone(true);
//在指定位置插入克隆行
tableRecord.AppendChild(clonedRow);
}
}
var rowIndex = ;
ZhuJian.Entity.TrainManage.StudyRecord studyRecord = null;
for (int i = ; i < studyRecords.Count; i++)
{
studyRecord = studyRecords[i];
rowIndex = i + ;
var row = tableRecord.Rows[rowIndex]; var cell0 = row.Cells[];
Paragraph pg0 = new Paragraph(doc);
pg0.AppendChild(new Run(doc, rowIndex + ""));
cell0.RemoveAllChildren();
cell0.AppendChild(pg0); var cell1 = row.Cells[];
Paragraph pg1 = new Paragraph(doc);
pg1.AppendChild(new Run(doc, studyRecord.StartTime.ToString("yyyy/MM/dd") + "-" + (studyRecord.EndTime.HasValue ? studyRecord.EndTime.Value.ToString("yyyy/MM/dd") : "")));
cell1.RemoveAllChildren();
cell1.AppendChild(pg1); var cell2 = row.Cells[];
Paragraph pg2 = new Paragraph(doc);
pg2.AppendChild(new Run(doc, studyRecord.ResourceName));
cell2.RemoveAllChildren();
cell2.AppendChild(pg2); var cell3 = row.Cells[];
Paragraph pg3 = new Paragraph(doc);
pg3.AppendChild(new Run(doc, studyRecord.IsFinish ? "" : ""));
cell3.RemoveAllChildren();
cell3.AppendChild(pg3);
}
var option = new ImageSaveOptions(SaveFormat.Jpeg);
option.PrettyFormat = true;
ret.Result = new string[doc.PageCount];
for (var page = ; page < doc.PageCount; page++)
{
option.PageIndex = page;
using (var ms = new MemoryStream())
{
doc.Save(ms, option);
ret.Result[page] = "data:image/jpeg;base64," + Convert.ToBase64String(ms.GetBuffer());
}
}
ret.Flag = true;
return ret;
}

最新文章

  1. .NET陷阱之六:从枚举值持久化带来大量空间消耗谈起
  2. 【JavaScript】浅析javaScript和HTML与unicode字符集的关系
  3. CodeForces 520B Two Buttons(用BFS)
  4. 同表复制修改日期的procedure
  5. Atitit 数据处理查询 中的异常标准化草案 jpa jdbc hb &#160;oql规范attilax总结
  6. Linux發送郵件
  7. Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用
  8. JavaScript ==和===
  9. IONIC beta.14 版本变更一览
  10. 【Android】Intent的使用-返回数据给上一个活动
  11. Example_07_05录音提示open failed: EACCES (Permission denied)
  12. aptana 插件离线下载方式
  13. 抽奖转盘(jqueryrotate.js)
  14. Linux CPU 负载度量公式
  15. JavaWeb 后端 &lt;三&gt; 之 Response Request 学习笔记
  16. UNIX网络编程——TCP—经受时延与nagle算法、滑动窗口、拥塞窗口
  17. jQuery使用(一):jQuery对象与选择器
  18. fail2ban 防爆破,防止CC 攻击
  19. gearman openresty 集成试用
  20. asyncio的核心概念与基本架构

热门文章

  1. 二、小程序内嵌Html基础格式说明
  2. 二、Spring Boot系列:Spring Initializer快速创建Spring Boot项目
  3. 【LeetCode】设计题 design(共38题)
  4. Notepad++安装Zen Codingt插件
  5. Maven 错误: Unknown lifecycle phase &quot;.sourceforge.javacsv&quot;. You must specify a valid lifecycle phase or a goal
  6. [Java复习] 微服务
  7. Lock之ReentrantLock及实现生产者消费者和死锁
  8. Delphi abstract error异常
  9. keil c51 不能使用:Go to Definition of....的解决方法 STC51
  10. C#操作xml完整类文件