分类 💯C# 下的文章 - 社畜猿
首页
🕒归档
📖留言板
💌关于
搜 索
1
我的小世界——博客上线啦
1,323 阅读
2
写于小程序上线之前
1,209 阅读
3
近期准备上线本站小程序
868 阅读
4
利用CSS3制作旋转3D立方体
745 阅读
5
RabbitMq C# .NET 接收广播 消费者 订阅者 简单使用 ~~
381 阅读
💯C#
🐘PHP
📝烂笔头
♉侃侃
登录
搜 索
标签搜索
React Native
rabbmitmq
thinkphp
Mysql
Typecho
socket
uniapp
tinkphp
php
echart
C语言
程序猿
累计撰写
130
篇文章
累计收到
17
条评论
首页
栏目
💯C#
🐘PHP
📝烂笔头
♉侃侃
页面
🕒归档
📖留言板
💌关于
用户登录
登录
找到
47
篇与
相关的结果
2024-09-03
.NET(C#)发送邮件的实现方法
.NET(C#)发送邮件的实现
2024年09月03日
30 阅读
0 评论
1 点赞
2024-08-20
C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压
C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压
2024年08月20日
5 阅读
0 评论
1 点赞
2024-05-14
c# Mysqlhelper 笔记
c# Mysqlhelper 笔记
2024年05月14日
19 阅读
0 评论
2 点赞
2024-04-09
C# 线程执行笔记
一定要声明成全局变量以保持对Timer的引用,不要声明成业务内的局部变量,否则会被垃圾收集器回收!using System; using System.Threading; using System.Threading.Tasks; namespace ActionStudy { class Program { private System.Threading.Timer timer; public static Action Print_Action;//声明事件 static void Main(string[] args) { //创建定时器,2000是延迟多少毫秒,10000是间隔时间 timer = new Timer(new TimerCallback(Execute), null, 2000, 10000); //timer= new System.Threading.Timer(new TimerCallback(Print), this, 5000, 0); //事件触发绑定的方法 Print_Action += Print; Console.ReadKey(); } /// <summary> /// 创建回调触发方法 /// </summary> /// <param name="o"></param> public static void Execute(object o) { //Console.WriteLine("just run now"); Print_Action?.Invoke(); } /// <summary> /// 需要定时执行的方法 /// </summary> public static void Print() { Console.WriteLine("Action我是狗子 希望你幸福!"+DateTime.Now.ToString()); } } }
2024年04月09日
7 阅读
1 评论
1 点赞
2024-01-10
.NET C#使用NPOI将Excel中的数据批量导入到MySQL
一、引入NPOI NuGet:通过NuGet管理解决方案安装:搜索:NPOI进行安装:二、ASP.NET Core使用EF Core连接MySQL执行简单的CRUD操作:因为该篇文章会涉及到MySQL数据库的操作,所以前提我们需要有一点的CRUD的基础。这里就不做详细的讲解了三、使用NPOI获取Excel数据注意点:1、关于Excel的版本问题做过Excel相关工作的人应该都清楚Office Excel的格式有两种:a、一种是.XLS是03版的Office Excel,无法打开高版本的。b、一种是.XLSX是07版(或者07以上的)的Office Excel,可以打开低版本的。所以我们在使用NPOI导入数据时不同格式获取Excel工作簿对象也有所不同,如下代码所示://Workbook对象代表一个工作簿,首先定义一个Excel工作薄 IWorkbook workbook; //XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式 #region 判断Excel版本 switch (fileType) { //.XLSX是07版(或者07以上的)的Office Excel case ".xlsx": workbook = new XSSFWorkbook(stream); break; //.XLS是03版的Office Excel case ".xls": workbook = new HSSFWorkbook(stream); break; default: throw new Exception("Excel文档格式有误"); } #endregion2、NPOI获取Excel单元格中不同类型的数据:#region NPOI获取Excel单元格中不同类型的数据 //获取指定的单元格信息 var cell = row.GetCell(j); switch (cell.CellType) { //首先在NPOI中数字和日期都属于Numeric类型 //通过NPOI中自带的DateUtil.IsCellDateFormatted判断是否为时间日期类型 case CellType.Numeric when DateUtil.IsCellDateFormatted(cell): dataRow[j] = cell.DateCellValue; break; case CellType.Numeric: //其他数字类型 dataRow[j] = cell.NumericCellValue; break; //空数据类型 case CellType.Blank: dataRow[j] = ""; break; //公式类型 case CellType.Formula: { HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(workbook); dataRow[j] = eva.Evaluate(cell).StringValue; break; } //布尔类型 case CellType.Boolean: dataRow[j] = row.GetCell(j).BooleanCellValue; break; //错误 case CellType.Error: dataRow[j] = HSSFErrorConstants.GetText(row.GetCell(j).ErrorCellValue); break; //其他类型都按字符串类型来处理(未知类型CellType.Unknown,字符串类型CellType.String) default: dataRow[j] = cell.StringCellValue; break; } #endregion 四、通用的NPOI Excel导入数据帮助类(NpoiExcelImportHelper):/** * Description:Npoi数据导入帮助类 * Description:2024年1月10日 */ using System; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; namespace YY_Utility { public class NpoiExcelImportHelper { private static NpoiExcelImportHelper _excelImportHelper; public static NpoiExcelImportHelper _ { get => _excelImportHelper ?? (_excelImportHelper = new NpoiExcelImportHelper()); set => _excelImportHelper = value; } /// <summary> /// 读取excel表格中的数据,将Excel文件流转化为dataTable数据源 /// 默认第一行为标题 /// </summary> /// <param name="stream">excel文档文件流</param> /// <param name="fileType">文档格式</param> /// <param name="isSuccess">是否转化成功</param> /// <param name="resultMsg">转换结果消息</param> /// <returns></returns> public DataTable ExcelToDataTable(Stream stream, string fileType, out bool isSuccess, out string resultMsg) { isSuccess = false; resultMsg = "Excel文件流成功转化为DataTable数据源"; var excelToDataTable = new DataTable(); try { //Workbook对象代表一个工作簿,首先定义一个Excel工作薄 IWorkbook workbook; //XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式 #region 判断Excel版本 switch (fileType) { //.XLSX是07版(或者07以上的)的Office Excel case ".xlsx": workbook = new XSSFWorkbook(stream); break; //.XLS是03版的Office Excel case ".xls": workbook = new HSSFWorkbook(stream); break; default: throw new Exception("Excel文档格式有误"); } #endregion var sheet = workbook.GetSheetAt(0); var rows = sheet.GetRowEnumerator(); var headerRow = sheet.GetRow(0); int cellCount = headerRow.LastCellNum;//最后一行列数(即为总列数) //获取第一行标题列数据源,转换为dataTable数据源的表格标题名称 for (var j = 0; j < cellCount; j++) { var cell = headerRow.GetCell(j); excelToDataTable.Columns.Add(cell.ToString()); } //补充一个获取图片 var pictures = workbook.GetAllPictures(); string polor_img=string.Empty;//路径 foreach (XSSFPictureData pic in pictures) { string ext = pic.SuggestFileExtension(); Image png = Image.FromStream(new MemoryStream(pic.Data)); polor_img = savepath+"\\"+c_id+"."+ ext; png.Save(polor_img); polor_img = $"/."; } //获取Excel表格中除标题以为的所有数据源,转化为dataTable中的表格数据源 for (var i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) { var dataRow = excelToDataTable.NewRow(); var row = sheet.GetRow(i); if (row == null) continue; //没有数据的行默认是null for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null)//单元格内容非空验证 { #region NPOI获取Excel单元格中不同类型的数据 //获取指定的单元格信息 var cell = row.GetCell(j); switch (cell.CellType) { //首先在NPOI中数字和日期都属于Numeric类型 //通过NPOI中自带的DateUtil.IsCellDateFormatted判断是否为时间日期类型 case CellType.Numeric when DateUtil.IsCellDateFormatted(cell): dataRow[j] = cell.DateCellValue; break; case CellType.Numeric: //其他数字类型 dataRow[j] = cell.NumericCellValue; break; //空数据类型 case CellType.Blank: dataRow[j] = ""; break; //公式类型 case CellType.Formula: { HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(workbook); dataRow[j] = eva.Evaluate(cell).StringValue; break; } //布尔类型 case CellType.Boolean: dataRow[j] = row.GetCell(j).BooleanCellValue; break; //错误 case CellType.Error: dataRow[j] = HSSFErrorConstants.GetText(row.GetCell(j).ErrorCellValue); break; //其他类型都按字符串类型来处理(未知类型CellType.Unknown,字符串类型CellType.String) default: dataRow[j] = cell.StringCellValue; break; } #endregion } } excelToDataTable.Rows.Add(dataRow); } isSuccess = true; } catch (Exception e) { resultMsg = e.Message; } return excelToDataTable; } } }OK~结束.NET C#使用NPOI导出Word详解.NET c# 使用NPOI导出Excel
2024年01月10日
38 阅读
0 评论
1 点赞
2024-01-10
.NET C#使用NPOI导出Word详解
一、首先引入NPOI NuGet通过NuGet管理解决方案安装,搜索:NPOI进行安装:二、导出的Work文档内容展示格式如下图所示:三、NPOI中的XWPFRun文本对象创建和常用属性简单概述XWPFRun文本对象说明: XWPFRun是段落的文本对象,先创建段落对象才能够在段落对象的基础上创建文本对象,并设置相关文本样式。使用方式,如下所示:/// <summary> /// 创建word文档中的段落对象和设置段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置) /// </summary> /// <param name="document">document文档对象</param> /// <param name="fillContent">段落第一个文本对象填充的内容</param> /// <param name="isBold">是否加粗</param> /// <param name="fontSize">字体大小</param> /// <param name="fontFamily">字体</param> /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param> /// <param name="isStatement">是否在同一段落创建第二个文本对象(解决同一段落里面需要填充两个或者多个文本值的情况,多个文本需要自己拓展,现在最多支持两个)</param> /// <param name="secondFillContent">第二次声明的文本对象填充的内容,样式与第一次的一致</param> /// <param name="fontColor">字体颜色--十六进制</param> /// <param name="isItalic">是否设置斜体(字体倾斜)</param> /// <returns></returns> public XWPFParagraph ParagraphInstanceSetting(XWPFDocument document, string fillContent, bool isBold, int fontSize, string fontFamily, ParagraphAlignment paragraphAlign, bool isStatement = false, string secondFillContent = "", string fontColor = "000000", bool isItalic = false) { XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象 paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐) XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象 xwpfRun.IsBold = isBold;//文字加粗 xwpfRun.SetText(fillContent);//填充内容 xwpfRun.FontSize = fontSize;//设置文字大小 xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜) xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制 xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定 if (!isStatement) return paragraph; XWPFRun secondXwpfRun = paragraph.CreateRun();//创建段落文本对象 secondXwpfRun.IsBold = isBold;//文字加粗 secondXwpfRun.SetText(secondFillContent);//填充内容 secondXwpfRun.FontSize = fontSize;//设置文字大小 secondXwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜) secondXwpfRun.SetColor(fontColor);//设置字体颜色--十六进制 secondXwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定 return paragraph; }XWPFRun文本对象的属性比较多,以下我简单介绍下常用的一些属性:XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象 XWPFRun xwpfRun= paragraph.CreateRun();//创建段落文本对象 xwpfRun.IsBold = isBold;//文字加粗 xwpfRun.SetText(fillContent);//填充内容 xwpfRun.FontSize = fontSize;//设置文字大小 xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定 xwpfRun.SetColor("BED4F1");//设置字体颜色--十六进制 xwpfRun.IsDoubleStrikeThrough=true;//是否显示双删除线 xwpfRun.IsStrikeThrough = true;//是否显示单删除线 xwpfRun.SetUnderline(UnderlinePatterns.Dash);//设置下划线,枚举类型 xwpfRun.SetTextPosition(20);//设置文本位置(设置两行之间的行间) xwpfRun.AddBreak();//设置换行(</br>) xwpfRun.AddTab();//添加tab键 xwpfRun.AddCarriageReturn();//添加回车键 xwpfRun.IsImprinted = true;//印迹(悬浮阴影),效果和浮雕类似 xwpfRun.IsItalic=true;//是否设置斜体(字体倾斜) xwpfRun.Subscript = VerticalAlign.SUBSCRIPT;//设置下标,枚举类型NPOI中关于XWPFRun属性的更多使用技巧,请阅读源码:源码地址颜色的十六进制对照表:参考地址四、NPOI生成Word完整代码:/** * Description:Npoi之导出Word段落,文本,表格,字体等相关样式统一封装 * Description:2024年1月10日 */ using System; using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; namespace YY_Utility { public class NpoiWordParagraphTextStyleHelper { private static NpoiWordParagraphTextStyleHelper _exportHelper; public static NpoiWordParagraphTextStyleHelper _ { get => _exportHelper ?? (_exportHelper = new NpoiWordParagraphTextStyleHelper()); set => _exportHelper = value; } /// <summary> /// 创建word文档中的段落对象和设置段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置) /// </summary> /// <param name="document">document文档对象</param> /// <param name="fillContent">段落第一个文本对象填充的内容</param> /// <param name="isBold">是否加粗</param> /// <param name="fontSize">字体大小</param> /// <param name="fontFamily">字体</param> /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param> /// <param name="isStatement">是否在同一段落创建第二个文本对象(解决同一段落里面需要填充两个或者多个文本值的情况,多个文本需要自己拓展,现在最多支持两个)</param> /// <param name="secondFillContent">第二次声明的文本对象填充的内容,样式与第一次的一致</param> /// <param name="fontColor">字体颜色--十六进制</param> /// <param name="isItalic">是否设置斜体(字体倾斜)</param> /// <returns></returns> public XWPFParagraph ParagraphInstanceSetting(XWPFDocument document, string fillContent, bool isBold, int fontSize, string fontFamily, ParagraphAlignment paragraphAlign, bool isStatement = false, string secondFillContent = "", string fontColor = "000000", bool isItalic = false) { XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象 paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐) XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象 xwpfRun.IsBold = isBold;//文字加粗 xwpfRun.SetText(fillContent);//填充内容 xwpfRun.FontSize = fontSize;//设置文字大小 xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜) xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制 xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定 if (!isStatement) return paragraph; XWPFRun secondXwpfRun = paragraph.CreateRun();//创建段落文本对象 secondXwpfRun.IsBold = isBold;//文字加粗 secondXwpfRun.SetText(secondFillContent);//填充内容 secondXwpfRun.FontSize = fontSize;//设置文字大小 secondXwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜) secondXwpfRun.SetColor(fontColor);//设置字体颜色--十六进制 secondXwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定 return paragraph; } /// <summary> /// 创建Word文档中表格段落实例和设置表格段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置) /// </summary> /// <param name="document">document文档对象</param> /// <param name="table">表格对象</param> /// <param name="fillContent">要填充的文字</param> /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param> /// <param name="textPosition">设置文本位置(设置两行之间的行间,从而实现表格文字垂直居中的效果),从而实现table的高度设置效果 </param> /// <param name="isBold">是否加粗(true加粗,false不加粗)</param> /// <param name="fontSize">字体大小</param> /// <param name="fontColor">字体颜色--十六进制</param> /// <param name="isItalic">是否设置斜体(字体倾斜)</param> /// <returns></returns> public XWPFParagraph SetTableParagraphInstanceSetting(XWPFDocument document, XWPFTable table, string fillContent, ParagraphAlignment paragraphAlign, int textPosition = 24, bool isBold = false, int fontSize = 10, string fontColor = "000000", bool isItalic = false) { var para = new CT_P(); //设置单元格文本对齐 para.AddNewPPr().AddNewTextAlignment(); XWPFParagraph paragraph = new XWPFParagraph(para, table.Body);//创建表格中的段落对象 paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐) //paragraph.FontAlignment =Convert.ToInt32(ParagraphAlignment.CENTER);//字体在单元格内显示位置与 paragraph.Alignment效果相似 XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象 xwpfRun.SetText(fillContent); xwpfRun.FontSize = fontSize;//字体大小 xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制 xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜) xwpfRun.IsBold = isBold;//是否加粗 xwpfRun.SetFontFamily("宋体", FontCharRange.None);//设置字体(如:微软雅黑,华文楷体,宋体) xwpfRun.SetTextPosition(textPosition);//设置文本位置(设置两行之间的行间),从而实现table的高度设置效果 return paragraph; } } }生成并保存Word:using Microsoft.AspNetCore.Hosting; using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.XWPF.UserModel; using System; using System.IO; using YY_Utility; namespace Export.Services { public class NpoiWordExportService { private static IHostingEnvironment _environment; public NpoiWordExportService(IHostingEnvironment iEnvironment) { _environment = iEnvironment; } #region 生成word /// <summary> /// 生成word文档,并保存静态资源文件夹(wwwroot)下的SaveWordFile文件夹中 /// </summary> /// <param name="savePath">保存路径</param> public bool SaveWordFile(out string savePath) { savePath = ""; try { string currentDate = DateTime.Now.ToString("yyyyMMdd"); string checkTime = DateTime.Now.ToString("yyyy年MM月dd日");//检查时间 //保存文件到静态资源wwwroot,使用绝对路径路径 var uploadPath = _environment.WebRootPath + "/SaveWordFile/" + currentDate + "/";//>>>相当于HttpContext.Current.Server.MapPath("") string workFileName = checkTime + "追逐时光企业员工培训考核统计记录表"; string fileName = string.Format(".docx", workFileName, System.Text.Encoding.UTF8); if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } //TODO:使用FileStream文件流来写入数据(传入参数为:文件所在路径,对文件的操作方式,对文件内数据的操作) //通过使用文件流,创建文件流对象,向文件流中写入内容,并保存为Word文档格式 using (var stream = new FileStream(Path.Combine(uploadPath, fileName), FileMode.Create, FileAccess.Write)) { //创建document文档对象对象实例 XWPFDocument document = new XWPFDocument(); /** *这里我通过设置公共的Word文档中SetParagraph(段落)实例创建和段落样式格式设置,大大减少了代码的冗余, * 避免每使用一个段落而去创建一次段落实例和设置段落的基本样式 *(如下,ParagraphInstanceSetting为段落实例创建和样式设置,后面索引表示为当前是第几行段落,索引从0开始) */ //文本标题 document.SetParagraph(NpoiWordParagraphTextStyleHelper._.ParagraphInstanceSetting(document, workFileName, true, 19, "宋体", ParagraphAlignment.CENTER), 0); //TODO:这里一行需要显示两个文本 document.SetParagraph(NpoiWordParagraphTextStyleHelper._.ParagraphInstanceSetting(document, $"编号:20190927101120445887", false, 14, "宋体", ParagraphAlignment.LEFT, true, $" 检查时间:"), 1); document.SetParagraph(NpoiWordParagraphTextStyleHelper._.ParagraphInstanceSetting(document, "登记机关:企业员工监督检查机构", false, 14, "宋体", ParagraphAlignment.LEFT), 2); #region 文档第一个表格对象实例 //创建文档中的表格对象实例 XWPFTable firstXwpfTable = document.CreateTable(4, 4);//显示的行列数rows:3行,cols:4列 firstXwpfTable.Width = 5200;//总宽度 firstXwpfTable.SetColumnWidth(0, 1300); /* 设置列宽 */ firstXwpfTable.SetColumnWidth(1, 1100); /* 设置列宽 */ firstXwpfTable.SetColumnWidth(2, 1400); /* 设置列宽 */ firstXwpfTable.SetColumnWidth(3, 1400); /* 设置列宽 */ //Table 表格第一行展示...后面的都是一样,只改变GetRow中的行数 firstXwpfTable.GetRow(0).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "企业名称", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(0).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "追逐时光", ParagraphAlignment.CENTER, 24, false)); firstXwpfTable.GetRow(0).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "企业地址", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(0).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "湖南省-长沙市-岳麓区", ParagraphAlignment.CENTER, 24, false)); //Table 表格第二行 firstXwpfTable.GetRow(1).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "联系人", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(1).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "小明同学", ParagraphAlignment.CENTER, 24, false)); firstXwpfTable.GetRow(1).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "联系方式", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(1).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "151****0456", ParagraphAlignment.CENTER, 24, false)); //Table 表格第三行 firstXwpfTable.GetRow(2).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "企业许可证号", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(2).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "XXXXX-66666666", ParagraphAlignment.CENTER, 24, false)); firstXwpfTable.GetRow(2).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "检查次数", ParagraphAlignment.CENTER, 24, true)); firstXwpfTable.GetRow(2).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, $"本年度检查8次", ParagraphAlignment.CENTER, 24, false)); firstXwpfTable.GetRow(3).MergeCells(0, 3);//合并3列 firstXwpfTable.GetRow(3).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "", ParagraphAlignment.LEFT, 10, false)); #endregion var checkPeopleNum = 0;//检查人数 var totalScore = 0;//总得分 #region 文档第二个表格对象实例(遍历表格项) //创建文档中的表格对象实例 XWPFTable secoedXwpfTable = document.CreateTable(5, 4);//显示的行列数rows:8行,cols:4列 secoedXwpfTable.Width = 5200;//总宽度 secoedXwpfTable.SetColumnWidth(0, 1300); /* 设置列宽 */ secoedXwpfTable.SetColumnWidth(1, 1100); /* 设置列宽 */ secoedXwpfTable.SetColumnWidth(2, 1400); /* 设置列宽 */ secoedXwpfTable.SetColumnWidth(3, 1400); /* 设置列宽 */ //遍历表格标题 secoedXwpfTable.GetRow(0).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "员工姓名", ParagraphAlignment.CENTER, 24, true)); secoedXwpfTable.GetRow(0).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "性别", ParagraphAlignment.CENTER, 24, true)); secoedXwpfTable.GetRow(0).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "年龄", ParagraphAlignment.CENTER, 24, true)); secoedXwpfTable.GetRow(0).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "综合评分", ParagraphAlignment.CENTER, 24, true)); //遍历四条数据 for (var i = 1; i < 5; i++) { secoedXwpfTable.GetRow(i).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "小明" + i + "号", ParagraphAlignment.CENTER, 24, false)); secoedXwpfTable.GetRow(i).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "男", ParagraphAlignment.CENTER, 24, false)); secoedXwpfTable.GetRow(i).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, 20 + i + "岁", ParagraphAlignment.CENTER, 24, false)); secoedXwpfTable.GetRow(i).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, 90 + i + "分", ParagraphAlignment.CENTER, 24, false)); checkPeopleNum++; totalScore += 90 + i; } #endregion #region 文档第三个表格对象实例 //创建文档中的表格对象实例 XWPFTable thirdXwpfTable = document.CreateTable(5, 4);//显示的行列数rows:5行,cols:4列 thirdXwpfTable.Width = 5200;//总宽度 thirdXwpfTable.SetColumnWidth(0, 1300); /* 设置列宽 */ thirdXwpfTable.SetColumnWidth(1, 1100); /* 设置列宽 */ thirdXwpfTable.SetColumnWidth(2, 1400); /* 设置列宽 */ thirdXwpfTable.SetColumnWidth(3, 1400); /* 设置列宽 */ //Table 表格第一行,后面的合并3列(注意关于表格中行合并问题,先合并,后填充内容) thirdXwpfTable.GetRow(0).MergeCells(0, 3);//从第一列起,合并3列 thirdXwpfTable.GetRow(0).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, " " + "检查内容: " + $"于下午检查了追逐时光企业员工培训考核并对员工的相关信息进行了相关统计,统计结果如下: " + "-------------------------------------------------------------------------------------" + $"共对该企业()人进行了培训考核,培训考核总得分为()分。 " + "", ParagraphAlignment.LEFT, 30, false)); //Table 表格第二行 thirdXwpfTable.GetRow(1).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, "检查结果: ", ParagraphAlignment.CENTER, 24, true)); thirdXwpfTable.GetRow(1).MergeCells(1, 3);//从第二列起,合并三列 thirdXwpfTable.GetRow(1).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, "该企业非常优秀,坚持每天学习打卡,具有蓬勃向上的活力。", ParagraphAlignment.LEFT, 24, false)); //Table 表格第三行 thirdXwpfTable.GetRow(2).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, "处理结果: ", ParagraphAlignment.CENTER, 24, true)); thirdXwpfTable.GetRow(2).MergeCells(1, 3); thirdXwpfTable.GetRow(2).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, "通过检查,评分为优秀!", ParagraphAlignment.LEFT, 24, false)); //Table 表格第四行,后面的合并3列(注意关于表格中行合并问题,先合并,后填充内容),额外说明 thirdXwpfTable.GetRow(3).MergeCells(0, 3);//合并3列 thirdXwpfTable.GetRow(3).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, "备注说明: 记住,坚持就是胜利,永远保持一种求知,好问的心理!", ParagraphAlignment.LEFT, 24, false)); //Table 表格第五行 thirdXwpfTable.GetRow(4).MergeCells(0, 1); thirdXwpfTable.GetRow(4).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, " 检查人员签名: 年 月 日", ParagraphAlignment.LEFT, 30, false)); thirdXwpfTable.GetRow(4).MergeCells(1, 2); thirdXwpfTable.GetRow(4).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, thirdXwpfTable, " 企业法人签名: 年 月 日", ParagraphAlignment.LEFT, 30, false)); #endregion //向文档流中写入内容,生成word document.Write(stream); savePath = "/SaveWordFile/" + currentDate + "/" + fileName; return true; } } catch (Exception ex) { //ignore savePath = ex.Message; return false; } } #endregion } }.NET 使用NPOI导出Excel详解:传送门
2024年01月10日
6 阅读
0 评论
0 点赞
2024-01-10
.NET c# 使用NPOI导出复杂Excel
.NET c# 使用NPOI导出Excel
2024年01月10日
5 阅读
0 评论
0 点赞
2023-12-25
C# datatable 用于二次修改
MySqlDataReader reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); DataTable schemaTable = reader.GetSchemaTable(); foreach (DataRow dr in schemaTable.Rows) { DataColumn dc = new DataColumn(); dc.DataType = dr[0].GetType(); dc.ColumnName = dr[0].ToString(); dt.Columns.Add(dc); } while (reader.Read()) { DataRow row = dt.NewRow(); for (int i = 0; i < schemaTable.Rows.Count; i++) { row[i] = reader[i].ToString(); } dt.Rows.Add(row); row = null; } schemaTable.Clear(); dt.DefaultView.Sort = "land_time ASC"; dt = dt.DefaultView.ToTable(); foreach (DataRow item in dt.Rows){ Console.WrintLine(item[0]); }
2023年12月25日
5 阅读
0 评论
1 点赞
2023-12-23
C#数据库datRow泛型反射实体类,
代码如下 public static class Tomodel{ public static Tmodel DataRowToModel<Tmodel>(this DataRow dr){ Type type = typeof(Tmodel); Tmodel md = (Tmodel)Activator.CreateInstance(type); foreach(var prop in type.GetProperties()){ prop.SetValue(md,dr[prop.Name]); } return md; } }使用(this 是扩展方法) dr.DataRowToModell<userModel>(); user.Add(dr.DataRowToModel<userModel>());
2023年12月23日
8 阅读
0 评论
1 点赞
2023-12-08
C# .Net TCP服务端开发(同时监听多个客户端请求-好用
C# .Net TCP服务端开发(同时监听多个客户端请求
2023年12月08日
8 阅读
0 评论
1 点赞
1
2
...
5