NPOI入门指南:轻松操作Excel文件的.NET库
目录
引言
一、NPOI概述
二、NPOI的主要用途
三、安装NPOI库
四、NPOI基本使用
六、性能优化和内存管理
七、常见问题与解决方案
八、结论
附录
引言
Excel文件作为数据处理的重要工具,广泛应用于各种场景。然而,在没有安装Microsoft Office的环境下,如何高效地操作Excel文件成为了一个挑战。NPOI库的出现,为我们提供了一个强大的解决方案。本文将详细介绍NPOI库的基本使用方法和高级特性,帮助读者轻松操作Excel文件。
一、NPOI概述
NPOI是一个开源的.NET库,它允许开发者在无需安装Microsoft Office的情况下读写Excel文件。NPOI构建在Apache POI项目之上,并提供了丰富的API来操作Excel文件。NPOI支持xls(Excel 97-2003)和xlsx(Excel 2007及更高版本)两种文件格式,并且兼容大部分Excel的特性,如单元格样式、数据格式、公式等。
与其他类似库相比,NPOI具有以下优势:
- 无需安装Office:NPOI不依赖于Microsoft Office,可以在没有Office的环境下运行。
- 支持多种文件格式:除了xls和xlsx外,NPOI还支持docx文件格式的读写。
- 丰富的Excel特性支持:NPOI包含了大部分Excel的特性,如单元格样式、数据格式、公式等。
二、NPOI的主要用途
- Excel文件的读写:NPOI允许开发者在不需要安装Microsoft Office的情况下,对Excel文件进行读写操作。这对于需要在没有Office环境的服务器上进行数据处理的应用非常有用。
- 支持多种文件格式:除了Excel文件(xls、xlsx)外,NPOI还支持Word文件(docx)的读写。
- 丰富的Excel特性支持:NPOI包含了大部分Excel的特性,如单元格样式、数据格式、公式等,使得开发者能够更灵活地操作Excel文件。
三、安装NPOI库
安装NPOI库非常简单,只需要通过NuGet包管理器即可。在Visual Studio中,右键点击项目 -> 选择“管理NuGet程序包” -> 在“浏览”选项卡中搜索“NPOI” -> 点击“安装”按钮即可。
四、NPOI基本使用
-
文件内容示例
- 代码示例
/// <summary>
/// 简单读取文件内容
/// </summary>
static void SimpleRead()
{//文件路径string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "01.xlsx");//判断文件路径,存在则继续if (File.Exists(filePath)){//文件流FileStream fs = null;//Excel工作簿操作对象IWorkbook workbook = null;//开启异常捕捉try{StringBuilder sb = new StringBuilder();//定义文件流打开fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//定义工作簿workbook = new XSSFWorkbook(fs);//读取工作表数量var numberOfSheets = workbook.NumberOfSheets;//判断工作表数量,大于零则继续if (numberOfSheets > 0){//获取第一个工作表var sheet0 = workbook.GetSheetAt(0);sb.AppendLine($"工作表名称:{sheet0.SheetName}");sb.AppendLine($"行数量:{sheet0.LastRowNum + 1}");if (sheet0.LastRowNum >= 0){//读取每一行信息for (int i = 0; i <= sheet0.LastRowNum; i++){var row = sheet0.GetRow(i);if (row != null){sb.Append($"第{i + 1}行数据:");//获取最后一列var lastCellNum = row.LastCellNum;for (int j = 0; j < lastCellNum; j++){//获取单元格var cell = row.GetCell(j);object cellValue = null;if (cell != null){#region 根据不同单元格格式提取内容switch (cell.CellType){case CellType.Boolean: cellValue = cell.BooleanCellValue; break;case CellType.Numeric: cellValue = cell.NumericCellValue; break;case CellType.Formula:var cachedCellType = cell.GetCachedFormulaResultTypeEnum();switch (cachedCellType){case CellType.Boolean: cellValue = cell.BooleanCellValue; break;case CellType.Numeric: cellValue = cell.NumericCellValue; break;default: cellValue = cell.StringCellValue; break;}break;default: cellValue = cell.StringCellValue; break;}#endregion}sb.Append($"\t{cellValue}");}sb.AppendLine();}}}Console.WriteLine(sb.ToString());}//关闭相关资源workbook.Close();workbook = null;//关闭相关资源fs.Close();fs = null;}catch (Exception ex){//显示异常信息Console.WriteLine($"发生异常:{ex.Message}");}finally{//关闭工作簿if (workbook != null){workbook.Close();}//关闭文件流if (fs != null){fs.Close();}}}
}
-
运行结果
简单文件写入
代码示例
/// <summary>
/// 简单写文件内容
/// </summary>
static void SimpleWrite()
{//文件路径string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "02.xlsx");//文件流FileStream fs = null;//Excel工作簿操作对象IWorkbook workbook = null;//开启异常捕捉try{#region 判断或创建文件var dir = Path.GetDirectoryName(filePath);if (!Directory.Exists(dir)){Directory.CreateDirectory(dir);}if (!File.Exists(filePath)){using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))using (var wb = new XSSFWorkbook()){wb.Write(stream);wb.Close();stream.Close();}}#endregion//定义工作簿workbook = new XSSFWorkbook();#region 预防性处理工作表ISheet sheet = workbook.CreateSheet("数据");#region 第一行,标题:时间,内容var row1 = sheet.CreateRow(0);row1.CreateCell(0).SetCellValue("时间");row1.CreateCell(1).SetCellValue("内容");#endregion#region 增加几行数据int rowIndex = 1;for (int i = 0; i < 10; i++){var row = sheet.CreateRow(rowIndex++);row.CreateCell(0).SetCellValue(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));row.CreateCell(1).SetCellValue(Guid.NewGuid().ToString().ToUpper());}#endregion//自适应sheet.AutoSizeColumn(0);sheet.AutoSizeColumn(1);#endregion#region 保存using (fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(fs);}#endregion//关闭相关资源workbook.Close();workbook = null;//关闭相关资源fs.Close();fs = null;}catch (Exception ex){//显示异常信息Console.WriteLine($"发生异常:{ex.Message}");}finally{//关闭工作簿if (workbook != null){workbook.Close();}//关闭文件流if (fs != null){fs.Close();}}
}
运行结果
定义单元格格式
代码示例
/// <summary>
/// 11 加粗 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetHeaderStyle(IWorkbook workbook)
{var style = GetStyle(workbook, true);style.FillPattern = FillPattern.SolidForeground;style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Grey25Percent.Index;return style;
}
/// <summary>
/// 红色背景 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetRedBackNormalStyle(IWorkbook workbook)
{var style = GetStyle(workbook);style.FillPattern = FillPattern.SolidForeground;style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;return style;
}
/// <summary>
/// 红色字体 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetRedNormalStyle(IWorkbook workbook)
{IFont font = workbook.CreateFont();font.Color = IndexedColors.Red.Index;font.FontHeightInPoints = 11;return GetStyle(workbook, font);
}
/// <summary>
/// 常规 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetNormalStyle(IWorkbook workbook)
{return GetStyle(workbook);
}
/// <summary>
/// 时间 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetDateTimeStyle(IWorkbook workbook)
{return GetStyle(workbook, false, 11, "yyyy-mm-dd hh:mm:ss");
}
/// <summary>
/// 数字 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetIntStyle(IWorkbook workbook)
{return GetStyle(workbook, false, 11, "0");
}/// <summary>
/// 浮点数 格式
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
static ICellStyle GetFloatStyle(IWorkbook workbook)
{return GetStyle(workbook, false, 11, "0.00");
}/// <summary>
/// 设定格式
/// </summary>
/// <param name="workbook">工作簿</param>
/// <param name="isBold">是否粗体,默认非粗体</param>
/// <param name="fontHeightInPoints">字高度(理解为字大小)</param>
/// <param name="dataFormat">自定义格式</param>
/// <param name="isWrapText">是否自动换行,默认是</param>
/// <returns></returns>
static ICellStyle GetStyle(IWorkbook workbook,bool isBold = false,double fontHeightInPoints = 11,string dataFormat = "",bool isWrapText = true)
{IFont font = workbook.CreateFont();font.IsBold = isBold;font.FontHeightInPoints = fontHeightInPoints;return GetStyle(workbook, font, dataFormat, isWrapText);
}
/// <summary>
/// 设定格式
/// </summary>
/// <param name="workbook">工作簿</param>
/// <param name="dataFormat">自定义格式</param>
/// <param name="isWrapText">是否自动换行,默认是</param>
/// <returns></returns>
static ICellStyle GetStyle(IWorkbook workbook,IFont font,string dataFormat = "",bool isWrapText = true)
{ICellStyle style = workbook.CreateCellStyle();style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;if (!string.IsNullOrWhiteSpace(dataFormat)){style.DataFormat = HSSFDataFormat.GetBuiltinFormat(dataFormat);if (style.DataFormat == -1) {IDataFormat format = workbook.CreateDataFormat();style.DataFormat = format.GetFormat(dataFormat);}}style.SetFont(font);style.WrapText = isWrapText;return style;
}
日常使用1
-
代码示例
/// <summary>/// 日常应用/// </summary>static void CommonApplicaiton(){//文件路径string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "03.xlsx");//文件流FileStream fs = null;//Excel工作簿操作对象IWorkbook workbook = null;//开启异常捕捉try{#region 判断或创建文件var dir = Path.GetDirectoryName(filePath);if (!Directory.Exists(dir)){Directory.CreateDirectory(dir);}if (!File.Exists(filePath)){using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))using (var wb = new XSSFWorkbook()){wb.Write(stream);wb.Close();stream.Close();}}#endregion//定义工作簿workbook = new XSSFWorkbook();//整数格式单元格样式var intStyle = GetIntStyle(workbook);//时间格式单元格样式var dateTimeStyle = GetDateTimeStyle(workbook);//普通单元格样式var normalStyle = GetNormalStyle(workbook);//标题样式var headerStyle = GetHeaderStyle(workbook);#region 创建工作表ISheet sheet = workbook.CreateSheet("数据");#region 第一行,标题:序号,时间,整数随机数var row1 = sheet.CreateRow(0);var orderCell = row1.CreateCell(0);orderCell.CellStyle = headerStyle;orderCell.SetCellValue("序号");sheet.SetColumnWidth(0, 3 * 512);var timeCell = row1.CreateCell(1);timeCell.CellStyle = headerStyle;timeCell.SetCellValue("时间");sheet.SetColumnWidth(1, 10 * 512);var randomCell = row1.CreateCell(2);randomCell.CellStyle = headerStyle;randomCell.SetCellValue("整数随机数");sheet.SetColumnWidth(2, 10 * 512);#endregion#region 增加几行数据Random random = new Random();int rowIndex = 1;for (int i = 0; i < 10; i++){var row = sheet.CreateRow(rowIndex++);//序号,直接用公式var cell1 = row.CreateCell(0);cell1.CellStyle = normalStyle;cell1.CellFormula = "ROW()-1";var cell2 = row.CreateCell(1);cell2.SetCellValue(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));cell2.CellStyle = normalStyle; var cell3 = row.CreateCell(2);cell3.CellStyle = intStyle;cell3.SetCellValue(random.Next());}#endregion#endregion#region 保存using (fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(fs);}#endregion//关闭相关资源workbook.Close();workbook = null;//关闭相关资源fs.Close();fs = null;}catch (Exception ex){//显示异常信息Console.WriteLine($"发生异常:{ex.Message}");}finally{//关闭工作簿if (workbook != null){workbook.Close();}//关闭文件流if (fs != null){fs.Close();}}}
运行结果
五、高级特性应用
- 数据验证
NPOI支持在Excel单元格中设置数据验证规则,例如限制输入的数据类型、范围等。
- 条件格式化
使用NPOI可以创建条件格式化规则,根据单元格的值改变其外观(如颜色、字体等)。
- 图表
NPOI支持创建和编辑Excel图表,包括柱状图、折线图、饼图等。
六、性能优化和内存管理
- 使用流(Stream)来读写文件
使用FileStream
而不是将整个文件加载到内存中,以提高性能和减少内存使用。
- 及时释放资源
在操作完Excel文件后,确保释放所有相关的资源,如FileStream
、IWorkbook
等。
七、常见问题与解决方案
- 无法打开xlsx文件
确保已正确安装NPOI库,并且使用了正确的文件路径和文件名。
- 单元格样式不生效
检查是否已正确创建和应用了单元格样式。
八、结论
NPOI库为.NET环境下的Excel文件操作提供了强大的支持。通过本文的介绍,相信读者已经掌握了NPOI库的基本使用方法和高级特性。鼓励大家尝试使用NPOI来处理Excel文件,并分享自己的使用经验和技巧。
附录
-
更多内容请参考以下网址https://github.com/nissl-lab/npoi
- NPOI官方文档链接:NPOI官方网站
- 相关资源下载地址:[NPOI NuGet包](NuGet Gallery | NPOI 2.7.0
相关文章:
![](https://img-blog.csdnimg.cn/direct/464f5629c74c4d9b9db159406963881d.png)
NPOI入门指南:轻松操作Excel文件的.NET库
目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具,广泛应用于各种场景。然而,在没有安装Microsoft Office的…...
![](https://img-blog.csdnimg.cn/img_convert/f55ca98b8a11f64fb00ca20f23ff39cb.png)
【高性能服务器】服务器概述
🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 服务器概述 服…...
![](https://www.ngui.cc/images/no-images.jpg)
003 SSM框架整合
文章目录 整合web.xmlapplicationContext-dao.xmlapplicationContext-service.xmlspringmvc.xmldb.propertieslog4j.propertiespom.xml 测试sqlItemController.javaItemMapper.javaItem.javaItemExample.javaItemService.javaItemServiceImpl.javaItemMapper.xml 整合 将工程的…...
![](https://img-blog.csdnimg.cn/direct/4d060c15dd3f4f69a23660193ee6a2ee.png)
web刷题记录(7)
[HDCTF 2023]SearchMaster 打开环境,首先的提示信息就是告诉我们,可以用post传参的方式来传入参数data 首先考虑的还是rce,但是这里发现,不管输入那种命令,它都会直接显示在中间的那一小行里面,而实际的命令…...
![](https://img-blog.csdnimg.cn/direct/542238b3d2654495ad4a5712567212f0.png)
【单片机毕业设计选题24037】-基于STM32的电力系统电力参数无线监控系统
系统功能: 系统上电后,OLED显示“欢迎使用电力监控系统请稍后”,两秒后显示“Waiting..”等待ESP8266初始化完成, ESP8266初始化成功后进入正常页面显示, 第一行显示电压值(单位V) 第二行显示电流值&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Python使用彩虹表来尝试对MD5哈希进行破解
MD5是一种散列算法,它是不可逆的,无法直接解密。它的主要作用是将输入数据进行散列,生成一个固定长度的唯一哈希值。 然而,可以使用预先计算好的MD5哈希值的彩虹表(Rainbow Table)来尝试对MD5进行破解。彩…...
![](https://img-blog.csdnimg.cn/direct/17ef9735c614408e8b474423b542ac77.png)
数据恢复篇: 如何在数据丢失后恢复照片
数据丢失的情况并不少见。如果您曾经遇到过图像丢失的情况,您可能想过照片恢复工具是如何工作的?可能会丢失多少数据图像?即使是断电也可能导致照片和媒体文件丢失。 话虽如此,如果你认为删除的照片无法恢复,那你就错…...
![](https://www.ngui.cc/images/no-images.jpg)
c++ 引用第三方库
文章目录 背景编写cmake代码里引用测试 背景 遇到一个c项目,想跑一些示例。了解下如何直接引用第三方库。 编写cmake 项目结构 myprojectincludexx.hmain.cppCMakeLists.txt CMakeLists.txt cmake_minimum_required(VERSION 3.28) project(velox_demo)set(CM…...
![](https://img-blog.csdnimg.cn/direct/38f628b7c56043e39b6c43f1172d9177.png)
[数据集][目标检测]猪只状态吃喝睡站检测数据集VOC+YOLO格式530张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):530 标注数量(xml文件个数):530 标注数量(txt文件个数):530 标注类别…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis中设置验证码
限制一分钟内最多发送5次,且每次有效时间是5分钟! String 发送验证码(phoneNumber) {key "shortMsg:limit:" phoneNumber;// 设置过期时间为 1 分钟(60 秒)// 使⽤ NX,只在不存在 key 时才能设置成功bool…...
![](https://www.ngui.cc/images/no-images.jpg)
使用hadoop进行数据分析
Hadoop是一个开源框架,它允许分布式处理大数据集群上的大量数据。Hadoop由两个主要部分组成:HDFS(Hadoop分布式文件系统)和MapReduce。以下是使用Hadoop进行数据分析的基本步骤: 数据准备: 将数据存储在HDF…...
![](https://img-blog.csdnimg.cn/direct/1c8259b5055547d2b631d56e150d9f5b.png)
架构师篇-7、企业安全架构设计及实践
摘要: 认识企业安全架构企业安全案例分析及实践 内容: 为什么做企业安全架构怎么做好安全架构设计案例实践分析&随堂练 为什么要做企业安全架构 安全是麻烦制造者? 整天提安全需求增加开发工作增加运维要求增加不确定性延后业务上线…...
![](https://www.ngui.cc/images/no-images.jpg)
递归算法~快速排序、归并排序
递归排序是一种基于分治法的排序算法,最典型的例子就是快速排序和归并排序。这两种算法都利用递归将问题分解成更小的子问题,然后将子问题的解合并以得到原始问题的解。 1、快速排序(Quick Sort) 快速排序的基本思想是选择一个基…...
![](https://img-blog.csdnimg.cn/img_convert/4efda82bff49a652bd85b27a94b729c7.jpeg)
DarkGPT:基于GPT-4-200k设计的人工智能OSINT助手
关于DarkGPT DarkGPT是一款功能强大的人工智能安全助手,该工具基于GPT-4-200k设计并实现其功能,可以帮助广大研究人员针对泄露数据库进行安全分析和数据查询相关的OSINT操作。 工具要求 openai1.13.3 requests python-dotenv pydantic1.10.12 工具安装 …...
![](https://img-blog.csdnimg.cn/direct/efc9710505d2479d979f837bddafc994.png)
RAG 检索增强生成有效评估
我们将介绍RAG(检索增强生成)的评估工作流程 RAG工作流程的部分 数据集 这里是我们将要使用的LCEL (LangChain Expression Language)相关问题的数据集。 这个数据集是在LangSmith UI中使用csv上传创建的: https://smith.langchain.com/public/730d833b-74da-43e2-a614-4e2ca…...
![](https://img-blog.csdnimg.cn/direct/fbd8f0ddf4cb443eba853cc3270c3615.png)
Day38:LeedCode 1049. 最后一块石头的重量 II 494. 目标和 474.一和零
1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。那么粉碎的可能结果…...
![](https://www.ngui.cc/images/no-images.jpg)
sqlalchemy分页查询
sqlalchemy分页查询 在SQLAlchemy中,可以使用limit和offset方法实现分页查询 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from models import MyModel # 假设MyModel是你定义的模型# 连接数据库 engine = create_engine(sqlite:///myd…...
![](https://img-blog.csdnimg.cn/direct/9f5806f430c74b74b614d92298a11396.png)
Java--常用类APl(复习总结)
前言: Java是一种强大而灵活的编程语言,具有广泛的应用范围,从桌面应用程序到企业级应用程序都能够使用Java进行开发。在Java的编程过程中,使用标准类库是非常重要的,因为标准类库提供了丰富的类和API,可以简化开发过…...
![](https://img-blog.csdnimg.cn/img_convert/bdb4e5a539bbae0b41264b545f198ab1.png)
【股指期权投教】一手股指期权大概多少钱?
一手股指期权的权利金大概在几千人民币左右,如果是作为期权卖方还需要另外缴纳保证金的。国内的股指期权有三种,沪深300、上证50、中证1000股指期权,每点合约人民币100 元。 期权合约的价值计算可以通过此公式得出:权利金的支付或…...
![](https://img-blog.csdnimg.cn/direct/dfd2d768d1494f77b1fc2c09ca8caf09.jpeg)
mmap()函数和munmap()函数的例子
代码: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/mman.h> #include <string.h> #include <stdio.h> #include <unistd.h>#define FILELENGTH 80 int main(void) {int fd-1;char …...
![](https://img-blog.csdnimg.cn/direct/630c484fbe444de889ada28c2bb493ad.gif#pic_center)
计算神经网络中梯度的核心机制 - 反向传播(backpropagation)算法(1)
计算神经网络中梯度的核心机制 - 反向传播(backpropagation)算法(1) flyfish 链式法则在深度学习中的主要应用是在反向传播(backpropagation)算法中。 从简单的开始 ,文本说的就是链式法则 R …...
![](https://www.ngui.cc/images/no-images.jpg)
VUE实现简易购物车
主要是对基础的指令的使用,直接上代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…...
![](https://www.ngui.cc/images/no-images.jpg)
混沌工程——从捣乱的视角看系统稳定性
概念 混沌工程是通过捣乱实验探究系统稳定性的实践过程,其作战武器是风险因子,即在健康的运行环境中引入风险变量来验证系统对风险的抵抗能力,它的作用是推动系统容错能力建设、验证监控告警及时性、提升研发问题排查能力。 混沌工程的工作…...
![](https://img-blog.csdnimg.cn/direct/088fefba65fa4014935b21931b8747a4.png)
Windows宝塔面板部署ThinkPHP8.0创建Vue项目案例
安装ThinkPHP8.0 登录宝塔面板,创建一个站点。 输入composer代码,执行完成后自动创建TP目录 composer create-project topthink/think tp 网站目录设置为tp,运行目录设置为public 设置PHP版本为8.0以上,不然会出现下面的报错代…...
![](https://img-blog.csdnimg.cn/direct/61e0a8b649834afcbfe0ae89b1a14fc1.png)
5G频段简介
5G频段 5G网络一共有29个频段,主要被分为两个频谱范围,其中6GHz以下的频段共有26个(统称为Sub6GHz),毫米波频段有3个。目前国内主要使用的是Sub6GHz,包括n1/n3/n28/n41/n77/n78/n79共7个频段。具体介绍如下…...
![](https://www.ngui.cc/images/no-images.jpg)
【python学习】bytearray 数组
在Python中,bytearray 是一个可变序列,用于表示一个字节数组。与不可变的 bytes 类型相比,bytearray 允许你修改其内容。你可以通过索引来访问和修改 bytearray 中的元素,也可以添加或删除元素。 使用 bytearray 的一些示例&…...
![](https://img-blog.csdnimg.cn/direct/58639abd624a4322b2f480d9edc9f519.png)
Labview_Occurrencel(事件发生)
PS:这里遇到 一个很Low的事情: 在停止第二个while循环的时候出现了停止不了的情况。因为等待事件发生设置的超时时间为:-1。所以等事件发生后出现了条件接线端已经执行的情况,所以当下次事件发生时未能及时停止。初版的停止设置如下图&#x…...
![](https://img-blog.csdnimg.cn/direct/1b3fcb33a49b49c58c8b60fe2f1547ed.png)
天气网站爬虫及可视化
摘要:随着互联网的快速发展,人们对天气信息的需求也越来越高。本论文基于Python语言,设计并实现了一个天气网站爬虫及可视化系统。该系统通过网络爬虫技术从多个天气网站上获取实时的天气数据,并将数据进行清洗和存储。同时&#…...
![](https://img-blog.csdnimg.cn/direct/998a0a705dc340b49c1224d685e4d48e.png)
【python - 数据】
一、序列 序列(sequence)是一组有顺序的值的集合,是计算机科学中的一个强大且基本的抽象概念。序列并不是特定内置类型或抽象数据表示的实例,而是一个包含不同类型数据间共享行为的集合。也就是说,序列有很多种类&…...
![](https://img-blog.csdnimg.cn/direct/435e8f7a59784f24a49594a54689e0ed.png)
几种热管的构造
1、超薄热管构造形式 在实际应用中,超薄热管通常定义为厚度小于2.0mm的平板热管。超薄热管很薄,可紧贴电子元件表面散热,故被广泛应用于移动和可携带电子设备,如智能手机、笔记本电脑和智能手表。用于笔记本电脑和平板电脑的超薄…...
![](https://img-blog.csdnimg.cn/direct/f80d2540d0904430bdf8972b37a2175b.png)
【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发
文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…...
![](https://img-blog.csdnimg.cn/img_convert/feff9ee6948dafaa0f4643494f10a0eb.bmp)
【proteus经典实战】16X192点阵程序
一、简介 6X192点阵程序通常用于表示高分辨率图像或文字,其中16X表示像素阵列的宽度,192表示每个像素阵列中的点阵数,16X192点阵程序需要一定的编程知识和技能才能编写和调试,同时还需要考虑硬件设备的兼容性和性能等因素。 初始…...
![](https://img-blog.csdnimg.cn/direct/55a7be68a5f74637a4625ac44b867436.png)
小白上手AIGC-基于FC部署stable-diffusion
AIGC AIGC(人工智能创造内容)作为一种基于人工智能技术生成内容的新型创作模式。打破了过去大家对于AI的理解都是说只能涉足部分领域而无法涉足艺术或者是其他的创作领域的定律,现在的AIGC也能够创作内容了,而不再只是单纯的返回…...
![](https://img-blog.csdnimg.cn/direct/ae967beeef794e4892fced50e353171f.png)
一些指标的学习
1.平均倒数排名(MRR) 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说,它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅ᵄ…...
![](https://img-blog.csdnimg.cn/direct/0ecad464479a43cea202d6b6f540b279.png)
dledger原理源码分析系列(三)-选主
简介 dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的选主 关键词 Raft Openmessaging 心跳/选…...
![](https://img-blog.csdnimg.cn/img_convert/855e99c3c3361b7d4dd0150143066165.jpeg)
如何修改PDF文档的作者名称?
要修改一个 PDF 文档的作者名称,你可以按照以下步骤进行操作: 1. **使用 Adobe Acrobat**(如果有): - Adobe Acrobat 是一个功能强大的 PDF 编辑工具,支持修改文档属性信息,包括作者名称。打开…...
![](https://img-blog.csdnimg.cn/img_convert/d337f6397813cde6020add39d5e74f35.jpeg)
从笔灵到AI去痕:全方位提升内容创作与学术诚信
内容为王,在内容创作的世界中尤为重要。然而,面对写作时常常感到无从下手:有时缺乏灵感,有时难以表达清楚自己的想法。AI写作助手的出现,为这些问题提供了创新的解决方案,极大地改变了内容创作的过程。 今…...
![](https://img-blog.csdnimg.cn/direct/99c624b41cec4cc7bce5bc783e39b620.png)
考试如果出现汉诺塔问题怎么办?
对于这道题来说 就按照测试案例里的数字进行输入 测试案例用100 那这三只鸡的具体最多能有多少只鸡呢? 用总数除以这只鸡的单价>>>>>>>即为这只鸡最多有 >>>>>>>> n / 单价 修改后 >>>>> 不只适…...
![](https://www.ngui.cc/images/no-images.jpg)
导出word模板开发记录
exportWordDocx.js import JSZipUtils from “jszip-utils” import Docxtemplater from “docxtemplater” import {saveAs} from “file-saver” import PizZip from “pizzip” const exportWordDocx (demoUrl, docxData, fileName) > {// 读取并获得模板文件的二进制…...
![](https://img-blog.csdnimg.cn/img_convert/a428cf07cac3dc11ae77bca3121ed820.jpeg)
PHP爬虫类的并发与多线程处理技巧
PHP爬虫类的并发与多线程处理技巧 引言: 随着互联网的快速发展,大量的数据信息存储在各种网站上,获取这些数据已经成为很多业务场景下的需求。而爬虫作为一种自动化获取网络信息的工具,被广泛应用于数据采集、搜索引擎、舆情分析…...
![](https://img-blog.csdnimg.cn/direct/4bdbb8405c6e47eb843e0221d7bae58a.png#pic_center)
用Python将PowerPoint演示文稿转换到图片和SVG
PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具,被广泛应用于教育、商务汇报及个人项目展示等领域。然而,面对不同的分享场景与接收者需求,有时需要我们将PPT内容以图片形式保存与传播。这样能够避免软件兼容性的限制&#x…...
![](https://img-blog.csdnimg.cn/555c350aa5c04a5987b02ce6c4dbd8bc.png)
机电公司管理小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,客户管理,公告管理,考勤管理,请假管理 微信端账号功能包括:系统首页,公告,机电零件&…...
![](https://www.ngui.cc/images/no-images.jpg)
SQL中的子查询和CTE(with ....as..)
第一次看到with as 这种类似于python中读文件的写法还是挺疑惑的,其实它是CTE,功能和子查询很类似但又有不同点,在实际应用场景中具有着独特作用。 子查询 子查询是在主查询中的嵌套查询,可以出现在SELECT、FROM、WHERE等子句中…...
![](https://www.ngui.cc/images/no-images.jpg)
Cesium 基本概念:创建实体和相机控制
基本概念 Entity // 创建一个实体 const entity_1 viewer.entities.add({position: new Cesium.Cartesian3(0, 0, 10000000),point: {pixelSize: 10,color: Cesium.Color.BLUE} });// 通过经纬度创建实体 const position Cesium.Cartesian3.fromDegrees(180.0, 0.0); // 创…...
![](https://img-blog.csdnimg.cn/direct/c0da5711a04e44ce8742f3613b09d685.gif)
vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果
效果图 效果链接:http://website.livequeen.top 介绍 一、Scrollreveal ScrollReveal 是一个 JavaScript 库,用于在元素进入/离开视口时轻松实现动画效果。 ScrollReveal 官网链接:ScrollReveal 二、animejs animejs是一个好用的动画库…...
![](https://www.ngui.cc/images/no-images.jpg)
在Ubuntu 16.04上安装和配置GitLab的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额…...
![](https://img-blog.csdnimg.cn/direct/7f5fbc45d59244cb85d4f6c0ed2ddee3.png)
STM32的SPI通信
1 SPI协议简介 SPI(Serial Peripheral Interface)协议是由摩托罗拉公司提出的通信协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,使用于对通信速率要求较高的场合。 …...
![](https://img-blog.csdnimg.cn/direct/02bfbe8944a342a7bd7ddd4b2c781a3e.gif#pic_center)
机器学习引领教育革命:智能教育的新时代
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习在教育中的应用🌞个性化学习🌙评估与反馈的智能化⭐教学资源的优…...
![](https://www.ngui.cc/images/no-images.jpg)
6月29日,每日信息差
第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收,为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一,与传统放疗技术相比,质子治疗…...
![](https://img-blog.csdnimg.cn/direct/a73a1f16718741b8bfb8e14f3498da2b.png)
SpringCloud中复制模块然后粘贴,文件图标缺少蓝色方块
再maven中点击+号,把当前pom文件交给maven管理即可...
![](https://img-blog.csdnimg.cn/img_convert/90762b612f253a1e81b1837105b9bde5.jpeg)
制作Ai 数字人和数字人带货全面拆解复盘
看了后不用再花高价钱去买怎么制作数字人 .数字人带货的相关教程了 市面上基本都是通过这几个方法制作的数字人 超级详细 值得注意的是 拆解的太详细 仅供正规个人用途哦 请勿用于任何非法操作 否则 就不用接着往下看了 点击获取完整版资料...
![](https://img-blog.csdnimg.cn/direct/40ca463715994519a93b8b26df6dd97f.png)
深度学习之半监督学习:一文梳理目标检测中的半监督学习策略
什么是半监督目标检测? 传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我…...
![](https://img-blog.csdnimg.cn/direct/cdbece30491345d08f56b87701306b6a.png)
云计算【第一阶段(26)】Linux网络设置
一、查看网络配置 1.查看网络接口信息ifconfig 查看所有活动的网络接口信息 2.ifconfig命令 查看指定网络接口信息 ifconfig 网络接口 (1)第一行:以太网卡的名字 ens33其中en代表以太网卡, centos6的是eth0, e…...
![](https://www.ngui.cc/images/no-images.jpg)
【Laravel生命周期全景】深入框架的心脏
标题:【Laravel生命周期全景】深入框架的心脏 Laravel是一个优雅的PHP Web框架,为现代Web应用程序的开发提供了丰富的功能和清晰的架构。理解Laravel的生命周期对于开发者来说至关重要,因为它涉及到应用程序从启动到响应请求的每一个环节。本…...
![](https://img-blog.csdnimg.cn/direct/363909090bbb44a39638c0543c3836da.png)
【C++】 解决 C++ 语言报错:Memory Leak
文章目录 引言 内存泄漏(Memory Leak)是 C 编程中常见且严重的内存管理问题之一。当程序分配了内存而没有正确释放,导致内存无法被重新利用时,就会发生内存泄漏。这种错误会导致程序占用越来越多的内存,最终可能导致系…...
![](https://www.ngui.cc/images/no-images.jpg)
四、golang基础之defer
文章目录 一、定义二、作用三、结果四、recover错误拦截 一、定义 defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。 二、作用 释放占用的资源捕捉处理异常输出日志 三、结果 如果一个函数中有多个defer语句,它们会以LIFO…...
![](https://www.ngui.cc/images/no-images.jpg)
7.2秒!大众途昂尊荣四驱高速极限测试
大众途昂高速极限测试。你想知道大众途昂尊荣四驱在高速上的极限速度吗?今天来进行一场高速极限测试。动力方面搭载一台2.5TV6发动机,最大马力为299匹,最大扭矩为500牛米,官方百公里加速时间为7.2秒。大众途昂尊荣四驱是一款以性能出色、操控稳定而著称的SUV车型,无论是越…...
![](https://www.ngui.cc/images/no-images.jpg)
Java中的super关键字详解
在Java编程中,super关键字是一个非常重要的概念,尤其是在继承和多态的场景中。理解super关键字的使用方法和其背后的机制,对于掌握面向对象编程(OOP)的基本概念至关重要。本篇博客将详细讲解super关键字的各种用法及其…...
![](https://img-blog.csdnimg.cn/direct/127ed38c60df40f0ba414778fd90e0cd.png)
Paddle使用问题No module named ‘paddle.fluid’
这是Paddle版本的问题,从飞桨框架 2.5 版本开始,已经废弃了 paddle.fluid 。 解决方案:修改paddle版本 pip install paddlepaddle2.4.0...
![](https://img-blog.csdnimg.cn/direct/00c20f9af7ba4e91a1f989d083267982.png)
量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?
哈喽,大家好,我是木头左! 为何选择QMT和VSCode进行量化策略开发? 在量化交易的世界里,选择正确的工具与拥有优秀的策略同等重要。调用用Visual Studio Code(简称VSCode)或pycharm,方…...
![](https://www.ngui.cc/images/no-images.jpg)
Python面试宝典:Python中与动态规划和排序算法相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)
Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十二章:高级数据结构和算法:第二节:Python中实现各类高级数据结构与算法三】 第十二章:高级数据结构和算法第二节:Python中实现各类高级数据结构与算法2.3、python中与动态规划和排…...
![](https://img-blog.csdnimg.cn/img_convert/12e0fabaf1390213fd8367628fbffd2e.png)
数据库技术基础
数据库技术基础 导航 文章目录 数据库技术基础导航一、基础概念数据库系统数据库管理系统DBMS分类数据库技术的发展数据库体系结构 二、数据模型数据模型基本概念 三、数据库的控制功能事务概述SOL中事务定义语句日志文件故障种类两个操作Undo/Redo事务故障的恢复系统故障的恢…...