highlighter

.NET Core使用NPOI导出复杂Word详解

我怕爱的太早我们不能终老 提交于 2020-04-10 08:32:10
前言:   最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架(并且现在已支持.NET Core,GitHub源码地址: https://github.com/tonyqus/npoi )。因为之前使用NPOI导出Execl比较多,这次第一次使用NPOI 来导出Word文档还真没有什么头绪。首先看了下GItHub中的源码有一个简单Word导出的示例,然后在看了网上有很多关于NPOI导出Word文档的案例,发现一个特点网上的好像都差不多,对于我而言网上的这些案例完全能够实现我的这个功能,但是感觉看了网上这些案例对NPOI实例化段落,表格和设置相关样式不太清楚(可能是因为自己笨),并且假如使用网上的方法来实现我的功能的话代码量会比较大,而且感觉代码非常的冗余(我是一个追求代码简洁的人,怎么能够容忍这样的事情发生呢!),因此通过查阅了一些资料和自己的理解,把关于使用NPOI导出Word时所要涉及的一些段落,表格样式做了相关注释,和把段落和表格的创建实例,设置文字、字体、对齐方式都封装了起了(为了少写代码),文章末尾会附上一个完整的案例下载地址。 一、首先引入NPOI NuGet: 版本说明:   NPOI 2.4.1

.NET Core使用NPOI导出复杂Word详解

吃可爱长大的小学妹 提交于 2020-04-10 08:28:12
前言:   最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架(并且现在已支持.NET Core,GitHub源码地址: https://github.com/tonyqus/npoi )。因为之前使用NPOI导出Execl比较多,这次第一次使用NPOI 来导出Word文档还真没有什么头绪。首先看了下GItHub中的源码有一个简单Word导出的示例,然后在看了网上有很多关于NPOI导出Word文档的案例,发现一个特点网上的好像都差不多,对于我而言网上的这些案例完全能够实现我的这个功能,但是感觉看了网上这些案例对NPOI实例化段落,表格和设置相关样式不太清楚(可能是因为自己笨),并且假如使用网上的方法来实现我的功能的话代码量会比较大,而且感觉代码非常的冗余(我是一个追求代码简洁的人,怎么能够容忍这样的事情发生呢!),因此通过查阅了一些资料和自己的理解,把关于使用NPOI导出Word时所要涉及的一些段落,表格样式做了相关注释,和把段落和表格的创建实例,设置文字、字体、对齐方式都封装了起了(为了少写代码),文章末尾会附上一个完整的案例下载地址。 一、首先引入NPOI NuGet: 版本说明:   NPOI 2.4.1

PDF.js实现在线展示pdf文件

久未见 提交于 2020-04-09 19:42:38
PDF.js是一个使用HTML5构建的可移植文档格式库。 PDF.js官网: http://mozilla.github.io/pdf.js/ 下载下来的压缩包包含两个文件夹:build和web,打开web文件夹下的viewer.html,就能看到PDF的预览效果了。 预览的PDF文件是位于viewer.html同目录下的compressed.tracemonkey-pldi-09.pdf, 而设置加载这个文件的地方是:与viewer.html同目录下的viewer.js的DEFAULT_URL属性,修改这个属性的值就能够预览不同的文件,中英文的pdf文件都能成功预览。 中文展示:修改viewer.html中的文件 <link rel="resource" type="application/l10n" href="locale/zh-CN/viewer.properties"> 需要添加MIME,否则会报404 .net core 添加方式 修改 Configure 中的 UseStaticFiles //添加MIME var provider = new FileExtensionContentTypeProvider(); provider.Mappings[".properties"] = "application/octet-stream"; app

LinuxNFS网络文件系统

ぐ巨炮叔叔 提交于 2020-04-09 12:43:51
LinuxNFS网络文件系统 首先需要准备四台机器,分别为以下服务器 NAS-Server-0 IP:192.168.254.10 Web-Server-1 IP:192.168.254.11 Web-Server-2 IP:192.168.254.12 Web-Server-3 IP:192.168.254.13 并且再hosts文件中添加解析 vim /etc/hosts 192.168.254.10 nas 192.168.254.11 server-1 192.168.254.12 server-2 192.168.254.13 server-3    全部关闭防火墙和SElinux服务 1、安装apache服务 1.1、三台WEB服务器分别安装apache服务 [root@server-1 ~]# yum -y install httpd nfs-utils [root@server-2 ~]# yum -y install httpd nfs-utils [root@server-3 ~]# yum -y install httpd nfs-utils 1.2、给这三台服务器设置不同的首页 [root@server-1 ~]# echo "Web-1" > /var/www/html/index.html [root@server-2 ~]# echo "Web-2"

js 图片轮播简单版

半世苍凉 提交于 2020-04-09 04:05:06
<html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload=function(){ setInterval("rollImg()",2000); } var imgarr=["https://www.w3school.com.cn/i/eg_tulip.jpg", "https://www.w3school.com.cn/i/eg_chinarose.jpg", "https://www.runoob.com/images/pulpit.jpg"] var i = 1; function rollImg(){ i++; if(i == 4){ i = 1; } var img_id = document.getElementById("img_id"); img_id.src= imgarr[i-1]; } </script> </head> <body> <center> <div style="width: 1200px; height: 800px; border: 5px solid purple; overflow: hidden;"> <img src="https://www.w3school.com.cn/i/eg_tulip.jpg" id="img_id"/> <

C#GroupBy、Sum、Select组合使用

给你一囗甜甜゛ 提交于 2020-04-09 03:25:28
List<MesStock> result = new List<MesStock>(); mesStocks.GroupBy(x => new { x.Deid, x.Pno, x.Sno }, (x, y) => { var total = y.Sum(a => a.TotalNums); var res = y.Select(stock => { stock.TotalNums = total; return stock; }).ToList(); result.Add(res.First()); return res; }).ToList();   测试代码: static void Main(string[] args) { var test = new List<MesStock> { new MesStock { Deid="1",Pno="1",Sno="1",TotalNums=1}, new MesStock { Deid="1",Pno="1",Sno="1",TotalNums=1}, new MesStock { Deid="1",Pno="1",Sno="1",TotalNums=11}, new MesStock {Deid="2",Pno="2",Sno="2",TotalNums=2}, new MesStock {Deid="2",Pno="2"

WPF 输入框正则效验

孤街浪徒 提交于 2020-04-09 01:12:34
原文: WPF 输入框正则效验 1. if (!TelphoneHelper2.IsTelphone(mobile) { MessageBox.Show("请录入正确的手机号!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); return; } 2.TelphoneHelper2.cs ? 1 2 3 4 5 6 7 8 9 10 public class TelphoneHelper2 { public static bool IsTelphone( string tel) { String strExp = @"[0-9][0-9][0-9]{9}" ; Regex r = new Regex(strExp); Match m = r.Match(tel); return m.Success; } }    来源: oschina 链接: https://my.oschina.net/u/4274700/blog/3225211

Nginx

安稳与你 提交于 2020-04-09 01:07:09
1. 当访问 https://xxx.com/ccb/xxx/xxx.html 跳转到 https://www.baidu.com 返回 301 重定向。 location /ccb/ { return 301 https://www.baidu.com; proxy_pass http://192.168.118.14/; index index.html index.htm; } 2. 当访问 https://xxx.com/ccb/activity/xxx.html 跳转到 https://www.baidu.com 返回 302 重定向。 location /ccb/ { rewrite /ccb/activity(.*)$ https://www.baidu.com break; proxy_pass http://192.168.118.14/; index index.html index.htm; } 来源: oschina 链接: https://my.oschina.net/u/4330613/blog/3225418

性能调优工具-火焰图

萝らか妹 提交于 2020-04-08 22:12:11
前言 工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快问题排查的进度。这也是我为什么非常喜欢 shell 的原因,它丰富的命令行工具集加管道特性处理起文本数据集来真的精准而优雅,让人迷醉。 但很多时候文本的表现力非常有限,可以说匮乏,表达绝对值时,自然是无往不利,但在展示相对值时,就有些捉襟见肘了,就更不用说多维数据了。我们用 shell 可以非常快速地查询出文本内的累加值、最大值等,但一遇到两组值的相关性分析时,就束手无策了。这个时候,就需要使用另一种分析工具 – 图 了,如散点图就能很清晰地展示相关性。 今天就准备介绍一种图, 火焰图 ,之前组内大神分享过它的使用办法,但我之后很久都没有用过,以至于对它没有什么深刻印象,最近排查我们 Java 应用负载问题时试用了一下,这才对它的用途有了点心得。 转载随意,文章会持续修订,请注明来源地址: https://zhenbianshu.github.io 。 介绍 引子 在排查性能问题时,我们通常会把线程栈 dump 出来,然后使用 grep --no-group-separator -A 1 java.lang.Thread.State jstack.log | awk 'NR%2==0' | sort | uniq -c | sort -nr 类似的 shell 语句

Scala 隐式(implicit)详解

那年仲夏 提交于 2020-04-08 22:09:15
文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。 1、Spark 中的隐式思考 隐式转换是Scala的一大特性, 如果对其不是很了解, 在阅读Spark代码时候就会很迷糊,有人这样问过我? RDD这个类没有reduceByKey,groupByKey等函数啊,并且RDD的子类也没有这些函数,但是好像PairRDDFunctions这个类里面好像有这些函数 为什么我可以在RDD调用这些函数呢? 答案就是Scala的隐式转换; 如果需要在RDD上调用这些函数,有两个前置条件需要满足: 首先rdd必须是RDD[(K, V)], 即pairRDD类型 需要在使用这些函数的前面Import org.apache.spark.SparkContext._;否则就会报函数不存在的错误; 参考SparkContext Object, 我们发现其中有上10个xxToXx类型的函数: implicit def intToIntWritable(i: Int) = new IntWritable(i) implicit def longToLongWritable(l: Long) = new LongWritable(l) implicit def