前言:

  这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦。客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做数据导出Excel文档(当时想想真香,网上随便搜一搜教程一大堆),但是当自己真正的实践起来才知道原来想要给不同的单元格设置相关的字体样式、边框样式以及单元格样式一个简单的样式需要写这么多行代码来实现。作为一个喜欢编写简洁代码的我而言肯定是受不了的,于是乎提起袖子说干就干,我自己根据网上的一些资料自己封装了一个通用的NPOI导出Excel帮助类,主要包括行列创建,行内单元格常用样式封装(如:字体样式,字体颜色,字体大小,单元格背景颜色,单元格边框,单元格内容对齐方式等常用属性),希望在以后的开发中能够使用到,并且也希望能够帮助到更多有需要的同学。

一、引入NPOI NuGet:

NPOI GitHub源码地址:

https://github.com/tonyqus/npoi

版本说明:

  NPOI 2.4.1 (注意不同版本可能使用的姿势有点小差别)

程序包管理器控制台输入一下命令安装:

Install-Package NPOI -Version 2.4.1

通过NuGet管理解决方案安装:

选择=>工具=>NuGet包管理器=>程序包管理器控制台:

搜索:NPOI进行安装:

二、导出Excel文档内容展示格式如下如所示:

三、CellStyle单元格常用样式概述:

HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //创建列头单元格实例样式
cellStyle.Alignment = hAlignment; //水平布局方式(HorizontalAlignment hAlignment)
cellStyle.VerticalAlignment = vAlignment; //垂直布局方式(VerticalAlignment vAlignment)
cellStyle.WrapText =false;//是否自动换行//TODO:十分注意,要设置单元格背景色必须是FillForegroundColor和FillPattern两个属性同时设置,否则是不会显示背景颜色
//如下设置黄色背景色
cellStyle.FillForegroundColor = cellBackgroundColor;//单元格背景颜色(short cellBackgroundColor = HSSFColor.Yellow.Index)
cellStyle.FillPattern = fillPattern;//填充图案样式(FineDots 细点,SolidForeground立体前景,isAddFillPattern=true时存在(FillPattern fillPattern = FillPattern.SolidForeground)//设置单元格边框样式
//常用的边框样式 None(没有),Thin(细边框,瘦的),Medium(中等),Dashed(虚线),Dotted(星罗棋布的),Thick(厚的),Double(双倍),Hair(头发)[上右下左顺序设置]
cellStyle.BorderBottom = BorderStyle.Thin;
cellStyle.BorderRight = BorderStyle.Thin;
cellStyle.BorderTop = BorderStyle.Thin;
cellStyle.BorderLeft = BorderStyle.Thin;//设置单元格边框颜色[上右下左顺序设置]
cellStyle.TopBorderColor = HSSFColor.DarkGreen.Index;//DarkGreen(黑绿色)
cellStyle.RightBorderColor = HSSFColor.DarkGreen.Index;
cellStyle.BottomBorderColor = HSSFColor.DarkGreen.Index;
cellStyle.LeftBorderColor = HSSFColor.DarkGreen.Index;

四、Font字体常用属性概述:

var cellStyleFont = (HSSFFont)workbook.CreateFont();//创建字体对象实例
//假如字体大小只需要是粗体的话直接使用下面该属性即可
cellStyleFont.IsBold = true;//或者通过下面属性,设置字体weight来设置字体是否加粗
cellStyleFont.Boldweight = boldWeight; //字体加粗(字体加粗 (None = 0,Normal = 400,Bold = 700)
cellStyleFont.FontHeightInPoints = fontHeightInPoints; //字体大小(short fontHeightInPoints)
cellStyleFont.FontName = fontName;//字体(仿宋,楷体,宋体 )
cellStyleFont.Color = fontColor;//设置字体颜色(short fontColor = HSSFColor.Black.Index)
cellStyleFont.IsItalic =true;//是否将文字变为斜体(true是,false否)
cellStyleFont.Underline = underlineStyle;//字体下划线(下划线样式(无下划线[None],单下划线[Single],双下划线[Double],会计用单下划线[SingleAccounting],会计用双下划线[DoubleAccounting]))
cellStyleFont.TypeOffset = typeOffset;//字体上标下标(字体上标下标(普通默认值[None],上标[Sub],下标[Super]),即字体在单元格内的上下偏移量)
cellStyleFont.IsStrikeout =true;//是否显示删除线(true显示,false不显示)

五、NPOI HSSFColor 颜色索引对照表:

说明:通过对相关属性的介绍,我们可以清楚的知道无论是字体颜色,表格边框颜色,还是单元格背景颜色我们都需要用到HSSFColor对象中的颜色属性索引(该索引的字符类型为short类型)。

HSSFColor颜色索引对照表如下表所示:

表格来源:https://www.cnblogs.com/Brainpan/p/5804167.html  (潘小博1992)

颜色 Class名称(注意由于NPOI的版本原因,我们在使用对应Class名称时首字母可能需要小写) short
Black 8
Brown 60
Olive_Green 59
Dark_Green 58
Dark_Teal 56
Dark_Blue 18
Indigo 62
Grey_80_PERCENT 63
Dark_Red 16
Orange 53
DARK_YELLOW 19
Green 17
Teal 21
Blue 12
Blue_Grey 54
Grey_50_PERCENT 23
Red 10
LIGHT_ORANGE 52
LIME 50
SEA_GREEN 57
AQUA 49
LIGHT_BLUE 48
VIOLET 20
GREY_40_PERCENT 55
Pink 14
Gold 51
Yellow 13
BRIGHT_GREEN 11
TURQUOISE 15
SKY_BLUE 40
Plum 61
GREY_25_PERCENT 22
Rose 45
Tan 47
LIGHT_YELLOW 43
LIGHT_GREEN 42
LIGHT_TURQUOISE 41
PALE_BLUE 44
LAVENDER 46
White 9
CORNFLOWER_BLUE 24
LEMON_CHIFFON 26
MAROON 25
ORCHID 28
CORAL 29
ROYAL_BLUE 30
LIGHT_CORNFLOWER_BLUE 31
AUTOMATIC 64

六、关于NPOI对Excel中的行列常用操作方法概述:

创建Excel工作表,给工作表赋一个名称(Excel底部名称):

1

var sheet = workbook.CreateSheet("人才培训课程表");

创建Excel中指定的行:

/// <summary>
/// TODO:先创建行,然后在创建对应的列
/// 创建Excel中指定的行
/// </summary>
/// <param name="sheet">Excel工作表对象</param>
/// <param name="rowNum">创建第几行(从0开始)</param>
/// <param name="rowHeight">行高</param>
public HSSFRow CreateRow(ISheet sheet, int rowNum, float rowHeight)
{HSSFRow row = (HSSFRow)sheet.CreateRow(rowNum); //创建行row.HeightInPoints = rowHeight; //设置列头行高return row;
}

创建行内指定的单元格:

/// <summary>
/// 创建行内指定的单元格
/// </summary>
/// <param name="row">需要创建单元格的行</param>
/// <param name="cellStyle">单元格样式</param>
/// <param name="cellNum">创建第几个单元格(从0开始)</param>
/// <param name="cellValue">给单元格赋值</param>
/// <returns></returns>
public HSSFCell CreateCells(HSSFRow row, HSSFCellStyle cellStyle, int cellNum, string cellValue)
{HSSFCell cell = (HSSFCell)row.CreateCell(cellNum); //创建单元格cell.CellStyle = cellStyle; //将样式绑定到单元格if (!string.IsNullOrWhiteSpace(cellValue)){//单元格赋值cell.SetCellValue(cellValue);}return cell;
}

指定合并的行列: 

//TODO:关于Excel行列单元格合并问题(注意:合并单元格后,只需对第一个位置赋值即可)
/**第一个参数:从第几行开始合并第二个参数:到第几行结束合并第三个参数:从第几列开始合并第四个参数:到第几列结束合并
**/
CellRangeAddress region = new CellRangeAddress(0, 0, 0, 5);
sheet.AddMergedRegion(region);cell.SetCellValue("人才培训课程表");//TODO:顶部标题

设置单元格的列宽:

sheet.SetColumnWidth(单元格索引,1000);//设置对应列宽(单元格索引从0开始,后面接宽度)

七、NPOI生成Excel文档完整代码:

NPOI之Excel数据导出帮助类(创建Excel表格行列,设置行高,设置字体样式,单元格边框样式,单元格背景颜色和样式,单元格内容对齐方式等常用属性和样式封装):

/*** Author:追逐时光* Description:Npoi之Excel数据导出帮助类(创建Excel表格行列,设置行高,设置字体样式,单元格边框样式,单元格背景颜色和样式,单元格内容对齐方式等常用属性和样式封装)* Description:2020年3月29日*/
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.Util;namespace YY_Utility
{public class NpoiExcelExportHelper{private static NpoiExcelExportHelper _exportHelper;public static NpoiExcelExportHelper _{get => _exportHelper ?? (_exportHelper = new NpoiExcelExportHelper());set => _exportHelper = value;}/// <summary>/// TODO:先创建行,然后在创建对应的列/// 创建Excel中指定的行/// </summary>/// <param name="sheet">Excel工作表对象</param>/// <param name="rowNum">创建第几行(从0开始)</param>/// <param name="rowHeight">行高</param>public HSSFRow CreateRow(ISheet sheet, int rowNum, float rowHeight){HSSFRow row = (HSSFRow)sheet.CreateRow(rowNum); //创建行row.HeightInPoints = rowHeight; //设置列头行高return row;}/// <summary>/// 创建行内指定的单元格/// </summary>/// <param name="row">需要创建单元格的行</param>/// <param name="cellStyle">单元格样式</param>/// <param name="cellNum">创建第几个单元格(从0开始)</param>/// <param name="cellValue">给单元格赋值</param>/// <returns></returns>public HSSFCell CreateCells(HSSFRow row, HSSFCellStyle cellStyle, int cellNum, string cellValue){HSSFCell cell = (HSSFCell)row.CreateCell(cellNum); //创建单元格cell.CellStyle = cellStyle; //将样式绑定到单元格if (!string.IsNullOrWhiteSpace(cellValue)){//单元格赋值cell.SetCellValue(cellValue);}return cell;}/// <summary>/// 行内单元格常用样式设置/// </summary>/// <param name="workbook">Excel文件对象</param>/// <param name="hAlignment">水平布局方式</param>/// <param name="vAlignment">垂直布局方式</param>/// <param name="fontHeightInPoints">字体大小</param>/// <param name="isAddBorder">是否需要边框</param>/// <param name="boldWeight">字体加粗 (None = 0,Normal = 400,Bold = 700</param>/// <param name="fontName">字体(仿宋,楷体,宋体,微软雅黑...与Excel主题字体相对应)</param>/// <param name="isAddBorderColor">是否增加边框颜色</param>/// <param name="isItalic">是否将文字变为斜体</param>/// <param name="isLineFeed">是否自动换行</param>/// <param name="isAddCellBackground">是否增加单元格背景颜色</param>/// <param name="fillPattern">填充图案样式(FineDots 细点,SolidForeground立体前景,isAddFillPattern=true时存在)</param>/// <param name="cellBackgroundColor">单元格背景颜色(当isAddCellBackground=true时存在)</param>/// <param name="fontColor">字体颜色</param>/// <param name="underlineStyle">下划线样式(无下划线[None],单下划线[Single],双下划线[Double],会计用单下划线[SingleAccounting],会计用双下划线[DoubleAccounting])</param>/// <param name="typeOffset">字体上标下标(普通默认值[None],上标[Sub],下标[Super]),即字体在单元格内的上下偏移量</param>/// <param name="isStrikeout">是否显示删除线</param>/// <returns></returns>public HSSFCellStyle CreateStyle(HSSFWorkbook workbook, HorizontalAlignment hAlignment, VerticalAlignment vAlignment, short fontHeightInPoints, bool isAddBorder, short boldWeight, string fontName = "宋体", bool isAddBorderColor = true, bool isItalic = false, bool isLineFeed = false, bool isAddCellBackground = false, FillPattern fillPattern = FillPattern.NoFill, short cellBackgroundColor = HSSFColor.Yellow.Index, short fontColor = HSSFColor.Black.Index, FontUnderlineType underlineStyle =FontUnderlineType.None, FontSuperScript typeOffset = FontSuperScript.None, bool isStrikeout = false){HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //创建列头单元格实例样式cellStyle.Alignment = hAlignment; //水平居中cellStyle.VerticalAlignment = vAlignment; //垂直居中cellStyle.WrapText = isLineFeed;//自动换行//背景颜色,边框颜色,字体颜色都是使用 HSSFColor属性中的对应调色板索引,关于 HSSFColor 颜色索引对照表,详情参考:https://www.cnblogs.com/Brainpan/p/5804167.html//TODO:引用了NPOI后可通过ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillPattern 为单元格背景色的填充样式//TODO:十分注意,要设置单元格背景色必须是FillForegroundColor和FillPattern两个属性同时设置,否则是不会显示背景颜色if (isAddCellBackground){cellStyle.FillForegroundColor = cellBackgroundColor;//单元格背景颜色cellStyle.FillPattern = fillPattern;//填充图案样式(FineDots 细点,SolidForeground立体前景)}//是否增加边框if (isAddBorder){//常用的边框样式 None(没有),Thin(细边框,瘦的),Medium(中等),Dashed(虚线),Dotted(星罗棋布的),Thick(厚的),Double(双倍),Hair(头发)[上右下左顺序设置]cellStyle.BorderBottom = BorderStyle.Thin;cellStyle.BorderRight = BorderStyle.Thin;cellStyle.BorderTop = BorderStyle.Thin;cellStyle.BorderLeft = BorderStyle.Thin;}//是否设置边框颜色if (isAddBorderColor){//边框颜色[上右下左顺序设置]cellStyle.TopBorderColor = HSSFColor.DarkGreen.Index;//DarkGreen(黑绿色)cellStyle.RightBorderColor = HSSFColor.DarkGreen.Index;cellStyle.BottomBorderColor = HSSFColor.DarkGreen.Index;cellStyle.LeftBorderColor = HSSFColor.DarkGreen.Index;}/*** 设置相关字体样式*/var cellStyleFont = (HSSFFont)workbook.CreateFont(); //创建字体//假如字体大小只需要是粗体的话直接使用下面该属性即可//cellStyleFont.IsBold = true;cellStyleFont.Boldweight = boldWeight; //字体加粗cellStyleFont.FontHeightInPoints = fontHeightInPoints; //字体大小cellStyleFont.FontName = fontName;//字体(仿宋,楷体,宋体 )cellStyleFont.Color = fontColor;//设置字体颜色cellStyleFont.IsItalic = isItalic;//是否将文字变为斜体cellStyleFont.Underline = underlineStyle;//字体下划线cellStyleFont.TypeOffset = typeOffset;//字体上标下标cellStyleFont.IsStrikeout = isStrikeout;//是否有删除线cellStyle.SetFont(cellStyleFont); //将字体绑定到样式return cellStyle;}}
}

生成并保存指定的Excel文档内容:

using System;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using YY_Utility;namespace YY_Services
{/// <summary>/// Excel文档生成并保存操作类/// </summary>public class NpoiExcelOperationService{private static IHostingEnvironment _environment;public NpoiExcelOperationService(IHostingEnvironment iEnvironment){_environment = iEnvironment;}/// <summary>/// Excel数据导出简单示例/// </summary>/// <param name="resultMsg">导出结果</param>/// <param name="excelFilePath">保存excel文件路径</param>/// <returns></returns>public bool ExcelDataExport(out string resultMsg, out string excelFilePath){var result = true;excelFilePath = "";resultMsg = "successfully";//Excel导出名称string excelName = "人才培训课程表";try{//首先创建Excel文件对象var workbook = new HSSFWorkbook();//创建工作表,也就是Excel中的sheet,给工作表赋一个名称(Excel底部名称)var sheet = workbook.CreateSheet("人才培训课程表");//sheet.DefaultColumnWidth = 20;//默认列宽sheet.ForceFormulaRecalculation = true;//TODO:是否开始Excel导出后公式仍然有效(非必须)#region table 表格内容设置#region 标题样式//设置顶部大标题样式var cellStyleFont = NpoiExcelExportHelper._.CreateStyle(workbook, HorizontalAlignment.Center, VerticalAlignment.Center, 20, true, 700, "楷体", true, false, false, true, FillPattern.SolidForeground, HSSFColor.Coral.Index, HSSFColor.White.Index,FontUnderlineType.None, FontSuperScript.None, false);//第一行表单var row = NpoiExcelExportHelper._.CreateRow(sheet, 0, 28);var cell = row.CreateCell(0);//合并单元格 例:第1行到第2行 第3列到第4列围成的矩形区域//TODO:关于Excel行列单元格合并问题/**第一个参数:从第几行开始合并第二个参数:到第几行结束合并第三个参数:从第几列开始合并第四个参数:到第几列结束合并**/CellRangeAddress region = new CellRangeAddress(0, 0, 0, 5);sheet.AddMergedRegion(region);cell.SetCellValue("人才培训课程表");//合并单元格后,只需对第一个位置赋值即可(TODO:顶部标题)cell.CellStyle = cellStyleFont;//二级标题列样式设置var headTopStyle = NpoiExcelExportHelper._.CreateStyle(workbook, HorizontalAlignment.Center, VerticalAlignment.Center, 15, true, 700, "楷体", true, false, false, true, FillPattern.SolidForeground, HSSFColor.Grey25Percent.Index, HSSFColor.Black.Index,FontUnderlineType.None, FontSuperScript.None, false);//表头名称var headerName = new[] { "课程类型", "序号", "日期", "课程名称", "内容概要", "讲师简介" };row = NpoiExcelExportHelper._.CreateRow(sheet, 1, 24);//第二行for (var i = 0; i < headerName.Length; i++){cell = NpoiExcelExportHelper._.CreateCells(row, headTopStyle, i, headerName[i]);//设置单元格宽度if (headerName[i] == "讲师简介" || headerName[i] == "内容概要"){sheet.SetColumnWidth(i, 10000);}else{sheet.SetColumnWidth(i, 5000);}}#endregion#region 单元格内容信息//单元格边框样式var cellStyle = NpoiExcelExportHelper._.CreateStyle(workbook, HorizontalAlignment.Center, VerticalAlignment.Center, 10, true, 400);//左侧列单元格合并 begin//TODO:关于Excel行列单元格合并问题(合并单元格后,只需对第一个位置赋值即可)/**第一个参数:从第几行开始合并第二个参数:到第几行结束合并第三个参数:从第几列开始合并第四个参数:到第几列结束合并**/CellRangeAddress leftOne = new CellRangeAddress(2, 7, 0, 0);sheet.AddMergedRegion(leftOne);CellRangeAddress leftTwo = new CellRangeAddress(8, 11, 0, 0);sheet.AddMergedRegion(leftTwo);//左侧列单元格合并 endvar currentDate = DateTime.Now;string[] curriculumList = new[] { "艺术学", "设计学", "材料学", "美学", "心理学", "中国近代史", "管理人员的情绪修炼", "高效时间管理", "有效的目标管理", "沟通与协调" };int number = 1;for (var i = 0; i < 10; i++){row = NpoiExcelExportHelper._.CreateRow(sheet, i + 2, 20); //sheet.CreateRow(i+2);//在上面表头的基础上创建行switch (number){case 1:cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 0, "公共类课程");break;case 7:cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 0, "管理类课程");break;}//创建单元格列公众类课程cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 1, number.ToString());cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 2, currentDate.AddDays(number).ToString("yyyy-MM-dd"));cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 3, curriculumList[i]);cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 4, "提升,充实,拓展自己综合实力");cell = NpoiExcelExportHelper._.CreateCells(row, cellStyle, 5, "追逐时光_" + number + "号金牌讲师!");number++;}#endregion#endregionstring folder = DateTime.Now.ToString("yyyyMMdd");//保存文件到静态资源文件夹中(wwwroot),使用绝对路径var uploadPath = _environment.WebRootPath + "/UploadFile/" + folder + "/";//excel保存文件名string excelFileName = excelName + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";//创建目录文件夹if (!Directory.Exists(uploadPath)){Directory.CreateDirectory(uploadPath);}//Excel的路径及名称string excelPath = uploadPath + excelFileName;//使用FileStream文件流来写入数据(传入参数为:文件所在路径,对文件的操作方式,对文件内数据的操作)var fileStream = new FileStream(excelPath, FileMode.OpenOrCreate, FileAccess.ReadWrite);//向Excel文件对象写入文件流,生成Excel文件workbook.Write(fileStream);//关闭文件流fileStream.Close();//释放流所占用的资源fileStream.Dispose();//excel文件保存的相对路径,提供前端下载var relativePositioning = "/UploadFile/" + folder + "/" + excelFileName;excelFilePath = relativePositioning;}catch (Exception e){result = false;resultMsg = e.Message;}return result;}}
}

总结:

  学习,工作,生活都一样,很多东西都需要我们自己动手去尝试我们才能真正的品尝到其中的味道,收获不一样的惊喜。本文主要是个人在工作和学习中的一些总结,希望能够帮助有需要的同学,别忘了给我star哟。

相关实例链接地址:

GitHub完整实例地址:

https://github.com/YSGStudyHards/NPOI-ExportWordAndExcel-ImportExcelData

.NET Core使用NPOI导出复杂,美观的Excel详解:

https://www.cnblogs.com/Can-daydayup/p/12501400.html

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

https://www.cnblogs.com/Can-daydayup/p/11588531.html

.NET Core使用NPOI将Excel中的数据批量导入到MySQL:

https://www.cnblogs.com/Can-daydayup/p/12593165.html

技术群:添加小编微信并备注进群

小编微信:mm1552923

公众号:dotNet编程大全

.NET Core使用NPOI导出复杂,美观的Excel详解相关推荐

  1. .NET NPOI导出Excel详解

    http://www.cnblogs.com/yinrq/p/5590970.html .NET NPOI导出Excel详解 NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是 ...

  2. .net开发时用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到“部分内容有问题”的报错

    项目场景: 提示:这里简述项目相关背景: .NET 开发 C# 问题描述 用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到"部分内容有问题"的报错 原因分析: 写 ...

  3. C#NPOI导出Excel详解

    C#NPOI导出Excel详解 开发工具与技术:工具:Visual Studio/C#.Net,技术:C# 作者:刘胜 撰写时间:2019-05-08 NPOI简介 NOP是一个开源的C#读写Exce ...

  4. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  5. [转帖]ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解

    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 https://www.cnblogs.com/vipyoumay/p/7525478.html ASP.NET C ...

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

    最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架 ...

  7. vue-json-excel 使用方法 导出excel 详解 以及实际操作 ,通俗易懂

    vue-json-excel 的具体使用方法 1安装 npm install vue-json-excel -S 2在main.js中注册使用 import JsonExcel from 'vue-j ...

  8. articulate storyline 导出html5,Articulate Storyline 3详解与交互学习资源制作

    Articulate Storyline 3详解与交互学习资源制作 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <Articula ...

  9. linux下java导出execl_POI实现导出EXCEL详解

    1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...

  10. ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解

    1.1. 名词解释 内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序. 用户态: 只能受限的访问内存, 且不允许访问外围设备. ...

最新文章

  1. python的集合类型——字符串、列表、元组、字典
  2. Boost:可移植地自定义boost :: hash的测试程序
  3. lua52 C API测试代码
  4. python标准库(二)
  5. python数据挖掘工程师-爬虫,python工程师,数据挖掘,机器学习。我该先以哪一个为主?...
  6. 电脑护眼设置_解锁办公新技能 海信护眼平板Q5玩转工作无负担-科技频道
  7. 服务器系统 比较,各种服务器操作系统比较
  8. DE11 Theory of General Second-order Linear Homogeneous ODEs
  9. dll模块化设计与编程_PLC模块、结构化编程到底强在哪里?
  10. 百度云网页视频加速播放
  11. 22年新款MacBookAir屏幕解析
  12. 关于向量的叉乘右手定则判方向
  13. 信息安全工程07875 自考软件工程 助学班复习纲要
  14. gmail支持html吗,gmail smtp
  15. PLC培训班一般多少钱?
  16. IDEA中项目编码格式设置
  17. 在BuildConfig中添加自定义字段
  18. 演化博弈、复制动态方程与仿真
  19. jenkins使用时遇到“using GIT_ASKPASS to set credentials”
  20. 给企业微信成员不同人发不同的文件

热门文章

  1. vue面试五之vue修饰符中 .lazy 等用法、Vue v2.4中新增的$attrs及$listeners属性的使用、v-once 的使用场景、vue组件里的定时器该如何销毁、vue海量数据优化等
  2. 老鸟分享_云堡垒机、运维堡垒机、运维审计系统、堡垒机能干什么?
  3. Facebook广告的基础认知,看一下你是否了解
  4. SqlServer 备份还原
  5. 生理学_神经系统的功能
  6. 前端学习个人心得,总结(个人向)
  7. LEARNING ACTIONABLE REPRESENTATIONS WITH GOAL-CONDITIONED POLICIES
  8. 智能驾驶相关—DMS系统数据解决方案
  9. 《Linux运维实战:搭建自己的Confluence知识管理系统》
  10. 全网最全JAVA面试八股文,终于整理完了