[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. js判断数组的方法

    1.实例的__proto__ 属性 非标准ie浏览器不支持 let arr = [1,2,3]; console.log('__proto__',arr.__proto__ === Array.pro ...

  2. Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案

    最近在用Esp8266 Arduino连接阿里云IOT的时候,服务器端老是返回rc=2 的错误! 用了MQTTfx模拟连接阿里云IOT没有问题,但是把同样的ClientID,UserName和Pass ...

  3. CompletableFuture事务问题

    前段时间写了关于CompletableFuture的使用博客,CompletableFuture使用方法详细说明 和 CompletableFuture的thenCompose使用具体说明. 但在实际 ...

  4. Java基础-注释、标识符和关键字、数据类型及拓展

    注释 单行注释// 多行注释/* */ 文档注释/** */ 标识符 Java所有的组成部分都需要名字.类名.变量名及方法名都被成为标识符 关键字 数据类型 强类型语言(安全性高,java) 要求变量 ...

  5. ORACLE 失效索引重建

    -- 获取失效索引 SELECT * FROM USER_INDEXES WHERE TABLE_NAME IN ('表名') AND STATUS = 'UNUSABLE'; -- 重建语法alte ...

  6. Java06 面向对象

    一 什么是面向对象 面向对象编程(Object-Oriented Programming,OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据. 三大特性: 封装 继承 多态 ...

  7. IaaS--云虚拟机(三)(何恺铎《深入浅出云计算》笔记整理)

    云虚拟机收费之省钱办法. [包年包月] 包年包月就是我们要提前预估好自己虚拟机的使用时间,比如半年.一年甚至三年,并提前支付相关款项的一种购买方式.这样的购买方式,通常能够给你带来较大幅度的折扣,帮你 ...

  8. APP学习4

    1.Toast Toast是Android系统提供的轻量级信息提醒制度,用于向用户提示即时信息,它显示在引用程序界面的最上层,显示一段时间后自动消失,不会打断当前操作,也不获得焦点. Toast.ma ...

  9. gitee下载项目

    PS:如果直接在gitee仓库中选择下载zip,在本地打开项目后是不会与gitee远程库绑定的.如果要与远程库同步,需要选择克隆,同样的,本地需要先搭建好git环境. 1.在本地新建文件夹 2.在文件 ...

  10. Linux上的I2C基础知识

    Linux上的I2C基础知识 什么是I2C I2C(Inter-Integrated Circuit,eye-squared-C),也称为 I2C 或 IIC,是一种同步.多控制器/多目标(主/从). ...