[HttpGet]
[Route("GetPurchaseItemWord")]
public IHttpActionResult Get_PurchaseItemWord(string id)
{
#region 文件流
var model = _purchaseRepository.Get(id);
var purchaseDetail = _purchasedetailRepository.GetDetails(model.id);
ItemPurchaseViewModel purchaseVM = new ItemPurchaseViewModel();
purchaseVM = Mapper.Map<im_purchase, ItemPurchaseViewModel>(model);
purchaseVM.itemList = purchaseDetail;
var predicateTrail = Predicates.Field<wf_flow_trail>(f => f.business_id, Operator.Eq, model.id);
var flow_trail = _trailRepository.GetList(predicateTrail).OrderBy(a => a.create_date).ToList();
IList<ISort> sort = new List<ISort>()
{
Predicates.Sort<wf_flow_node>(x => x.create_date)
};
var flow_node = _nodeRepository.GetList(Predicates.Field<wf_flow_node>(x => x.flow_id, Operator.Eq, "14e84dba-8546-46b0-989e-0ee1312345ad"), sort).ToList();
flow_node = flow_node.Where(a => a.id != "20").ToList();
purchaseVM.flow_node = Mapper.Map<List<wf_flow_node>, List<flow_node>>(flow_node); try
{
string Path = AppDomain.CurrentDomain.RelativeSearchPath + "\\" + "Templet";
Path = Path.Replace("\\bin\\", "\\");
string templatePath = Path + "\\impurchaseTml.doc"; //自己做好的word
Document WordDoc = new Document(templatePath); DocumentBuilder builder = new DocumentBuilder(WordDoc);
builder.MoveToBookmark("impurchase");
if (WordDoc.Range.Bookmarks["impurchase"] != null)
{
var table = builder.StartTable();
//设置文本垂直居中
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
//设置字体大小
Aspose.Words.Font f = builder.Font;
f.Size = 12;
builder.InsertCell();
builder.CellFormat.Width = 35; builder.Write("序号");
builder.InsertCell();
builder.CellFormat.Width = 100; builder.Write("名称");
builder.InsertCell();
builder.CellFormat.Width = 70; builder.Write("规格型号");
builder.InsertCell();
builder.CellFormat.Width = 40; builder.Write("数量");
builder.InsertCell();
builder.CellFormat.Width = 45; builder.Write("单价");
builder.InsertCell();
builder.CellFormat.Width = 70; builder.Write("总计");
builder.InsertCell();
builder.CellFormat.Width = 112; builder.Write("备注");
builder.EndRow();
decimal? money = 0;
foreach (var item in purchaseDetail)
{
builder.InsertCell();
builder.CellFormat.Width = 35; builder.Write((purchaseDetail.IndexOf(item)+1).ToString());
builder.InsertCell();
builder.CellFormat.Width = 100; builder.Write(item.name);
builder.InsertCell();
builder.CellFormat.Width = 70; builder.Write(item.specification != null ? item.specification : "");
builder.InsertCell();
builder.CellFormat.Width = 40; builder.Write(item.quantity.ToString());
builder.InsertCell();
builder.CellFormat.Width = 45; builder.Write(item.price.ToString());
builder.InsertCell();
builder.CellFormat.Width = 70; builder.Write((item.quantity*item.price).ToString());
builder.InsertCell();
builder.CellFormat.Width = 112; builder.Write(item.remark != null ? item.remark : "");
money += item.price * item.quantity;
builder.EndRow();
}
f.Size = 16;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;//合并单元格开始
builder.CellFormat.Width = 35; builder.Write("预计总额");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 100;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; //合并单元格结束
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 70; builder.Write(money.ToString());
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 40;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 45;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 70;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 112;
builder.EndRow();
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 35; builder.Write("使用说明");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 100;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 70; builder.Write(model.remark);
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 40;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 45;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 70;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 112;
builder.EndRow(); builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 35; builder.Write("申请人");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 100;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 70; builder.Write(model.create_user);
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 40;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 45; builder.Write("申请时间");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 70;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.Width = 112; builder.Write(Convert.ToDateTime(model.create_date).ToString("yyyy年MM月dd日"));
builder.EndRow(); builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 35; builder.Write("申请部门");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 100;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 70; builder.Write(model.dept_name);
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 40;
foreach (var nodeitem in purchaseVM.flow_node)
{
var trail= flow_trail.Where(a => a.next_node_id == nodeitem.next_node).OrderByDescending(a => a.create_date).FirstOrDefault();
var filepath = (AppDomain.CurrentDomain.RelativeSearchPath).Replace("\\bin", "\\");
if (nodeitem.name== "后勤部门意见")
{
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 45; builder.Write("部门意见");
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 70;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.Width = 112;
if (trail != null)
{
builder.Write(trail.approval != null ? trail.approval : "");
if (File.Exists(filepath + trail.sign_path))
{
builder.InsertImage(filepath + trail.sign_path, RelativeHorizontalPosition.Margin, 1, RelativeVerticalPosition.Margin, 1, 100, 40, WrapType.Square);//插入图片
}
}
builder.EndRow();
}
else
{
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 35; builder.Write(nodeitem.name);
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 100;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 70;
if (trail != null)
{
builder.Write(trail.approval != null ? trail.approval : "");
if (File.Exists(filepath + trail.sign_path))
{
builder.InsertImage(filepath + trail.sign_path, RelativeHorizontalPosition.Margin, 1, RelativeVerticalPosition.Margin, 1, 100, 40, WrapType.Square);
}
} builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 40;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 45;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 70;
builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.Width = 112;
builder.EndRow();
}
}
table.AutoFit(AutoFitBehavior.FixedColumnWidths);
builder.EndTable(); table.Alignment = TableAlignment.Center;
//表格居中、固定宽高
} string sPath = AppDomain.CurrentDomain.RelativeSearchPath + "\\" + "UploadFile";
sPath = sPath.Replace("\\bin\\", "\\");
var fileName = "物品采购单" + DateTime.Now.ToString("yyyy-MM-dd") + ".doc";
fileName = HttpUtility.UrlEncode(fileName);
string filePath = sPath + "\\" + fileName;
WordDoc.Save(filePath);
var stream = FileToStream(filePath);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = fileName;
return ResponseMessage(result); }
catch (Exception e)
{
//return new HttpResponseMessage(HttpStatusCode.NoContent);
return Json(new { success = false, message = "导出有误,请联系管理员!" });
}
#endregion
}

aspose word导出表格的更多相关文章

  1. Aspose.Word 输出表格后空格字符丢失的解决方法

    将datatable输出到word,执行如下代码. doc.MailMerge.ExecuteWithRegions(outDt); 执行完后发现第一列含前缀空格的字段值,空格字符被自动清除了. 解决 ...

  2. Aspose.Words导出图片 表格 Interop.Word

    先定义一个WORD 模板, 然后替换文本.域 ,定位开始表格 文本和段落 // Specify font formatting Aspose.Words.Font font = builder.Fon ...

  3. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  4. C#通过模板导出Word(文字,表格,图片)

    C#通过模板导出Word(文字,表格,图片)   C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法, ...

  5. 通过Aspose.Word和ZXING生成复杂的WORD表格

    1.前言 这是我之前做的一个项目中要求的功能模块,它的需求是生成一个WORD文档,需要每页一个表格并且表格中需要插入文字.条形码和二维码等信息,页数可控制.具体的效果如下图所示: 可以看到有以下几点是 ...

  6. 利用Aspose.Word控件实现Word文档的操作

    Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般 ...

  7. 黄聪:利用Aspose.Word控件实现Word文档的操作(转)

    撰写人:伍华聪  http://www.iqidi.com  Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及 ...

  8. 关于ASPOSE.WORD使用上的一个小问题

    最近实习期间负责了公司某个项目的一个功能模块里面的word导出功能,使用的是ASPOSE.WORD类库,但是经常导出时候会遇到图中的问题,大概意思就是两个表格不能跨在一起,调试了好几次还是没发现具体的 ...

  9. aspose.word 使用简单方法

    aspose.word使用简单方法 概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 1 2 3 4 5 public Documen ...

  10. Aspose.Word 的常见使用(2018-12-26 更新版)

    Aspose.Word 的常见使用 起因 因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成.下面是通过DocumentBuilder来设计W ...

随机推荐

  1. JVM(一) --- 什么是JVM

    写在文章前:本系列博客是学习黑马程序员JVM完整教程所做笔记.若有错误希望大佬们评论区修正. 一.什么是JVM      Java Virtual Machine - java程序运行时所需环境(ja ...

  2. PHP_递归实现无限级分类

    <?php /** * 递归方法实现无限级别分类 * @param array $list 要生成树形列表的数组[该数组中必须要有主键id 和 父级pid] * @param int $pid= ...

  3. mybatis 数据搜索后参数显示乱码无法搜到

    今天写作业的时候遇到的小问题 问题说明:搜索订单名中含有"香皂"的订单,显示订单的一系列属性.在搜索后,调试框中显示的东西很奇怪,也没有查找到答案: 觉得是编码问题,所以调试了编码 ...

  4. Python安装及配置教程

    安装教程 一.python3.6安装步骤 1.首先我们移步官网,下载最新版本的python-3.6.0.点我,我把你传送到python官网 在DownLoad下拉框中点击Windows,选择要下载的文 ...

  5. Neural Network模型复杂度之Weight Decay - Python实现

    背景介绍Neural Network之模型复杂度主要取决于优化参数个数与参数变化范围. 优化参数个数可手动调节, 参数变化范围可通过正则化技术加以限制. 正则化技术之含义是: 引入额外的条件, 对fu ...

  6. 无锁并发,CAS等

    Unsafe

  7. this指向问题大全和call,apply,bind详解

    详细笔记链接:https://www.jianshu.com/p/bc541afad6ee 函数内外作用域问题: var a = 1function f1(){ var a = 2 console.l ...

  8. python的惊艳之举--源于一个同事分享16种字符串反转方式

    日期:2018/12/19 最近刚学习了Python的入门课程,准备寻找你的进阶门路,偶尔得到一个老同事微信分享,标题让我这种greenhand心砰砰砰... 好了,看标题: 面试官让用 5 种 py ...

  9. 《Rust权威指南》学习笔记——8.通用集合类型

    Rust通用集合类型 动态数组Vec 字符串String 和&str 哈希映射HashMap

  10. MySQL时区的问题

    我这里是在application.properties文件中配置的MySQL连接信息. 开始时间显示不征程是因为没有配置时区,后来加上了setTimeZone=Asia/Shanghai,时间显示正常 ...