phpspreadsheet excel导入导出
单个sheet页Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。Excel2003的最大列数是256列,2007以上版本是16384列。
xlswriter
xlswriter - PHP 高性能 Excel 扩展,功能类似phpspreadsheet。它能够处理非常大的文件,同时保持内存使用率非常低。
/*** 使用php扩展导出文件(大数据方案)** @param $fileName* @param $header* @param $list* @throws \Exception*/
public function xlsWriter($fileName, $header, $list)
{if (!extension_loaded('xlswriter')) {throw new \Exception('请先安装php的xlswriter扩展');}$config = ['path' => $this->_path];$excel = new \Vtiful\Kernel\Excel($config);//WPS需要关闭 zip64,否则打开文件可能报文件损坏;该问题已反馈给WPS,修复进度未知。第三个参数 False 即为关闭 ZIP64$fileObject = $excel->constMemory($fileName, NULL, false);$fileHandle = $fileObject->getHandle();$format = new \Vtiful\Kernel\Format($fileHandle);$boldStyle = $format->bold()->toResource();$data = [];foreach ($list as $info) {$row = [];foreach ($header as $key => $title) {$row[] = $info[$key];}$data[] = $row;}$fileObject->freezePanes(1, 0)->setRow('A1', 20, $boldStyle) //固定表头设置样式->header(array_values($header))->data($data)->output();
}// 读取文件
$data = $excel->openFile('text.xlsx')->openSheet()->getSheetData();
IDE Helper
composer require viest/php-ext-xlswriter-ide-helper:dev-master
phpspreadsheet
php spreadsheet是phpexcel的下一个版本。它打破了兼容性,大大提高了代码基础质量(名称空间、PSR兼容性、使用最新的PHP语言功能等)。因为所有的努力都转移到了phpspreadsheet,phpexcel将不再被维护。对phpexcel、补丁和新功能的所有贡献都应该以phpspreadsheet主分支为目标。
//创建一个处理对象实例
$spreadsheet = new Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);
$objActSheet = $spreadsheet->getActiveSheet();
由于Office2003兼容性包中的错误,打开Xlsx电子表格时可能会出现一些小问题(主要与公式计算有关)。您可以使用以下代码启用Office2003兼容性:
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->setOffice2003Compatibility(true);
$writer->save("05featuredemo.xlsx");
//设置文档基本属性
$spreadsheet->getProperties()->setCreator("Helloweba") //作者->setLastModifiedBy("Yuegg") //最后修改者->setTitle("Office 2007 XLSX Test Document") //标题->setSubject("Office 2007 XLSX Test Document") //副标题->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") //描述->setKeywords("office 2007 openxml php") //关键字->setCategory("Test result file"); //分类
//设置当前的sheet索引,用于后续的内容操作。一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$spreadsheet->setActiveSheetIndex(0);//创建新的工作标签
$newSheet = $spreadsheet->createSheet();//设置当前活动sheet的名称
$objActSheet->setTitle('测试Sheet');
设置单元格格式为文本
//公式
$objActSheet->setCellValue('A4','=SUM(A2:A2)');
$objActSheet->setCellValue('K6', '=F6+G6+H6');//显式指定内容类型
$objActSheet->setCellValueExplicit('A5','8757584',\PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);$objActSheet->getActiveSheet()->getStyle('3')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//使用\n进行单元格内换行
$value = "Hello World!" . PHP_EOL . "Next Line";
$sheet->setCellValue('A1', $value);
$sheet->getStyle('A1')->getAlignment()->setWrapText(true);
//合并单元格
$objActSheet->mergeCells('B1:C22');//分离单元格
$objActSheet->unmergeCells('B1:C22');//插入行或列
$objActSheet->insertNewRowBefore(6, 10);
$objActSheet->removeRow(6, 10);
$objActSheet->insertNewColumnBefore('E', 5);
$objActSheet->removeColumn('E', 5);
默认设置:默认字体大小,宽度,高度,对齐方式
//worksheet默认style设置(和默认不同的需单独设置)
$spreadsheet->getDefaultStyle()->getFont()->setName('Arial');
$spreadsheet->getDefaultStyle()->getFont()->setSize(8);
$alignment = $spreadsheet->getDefaultStyle()->getAlignment();
$alignment->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$alignment->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);//默认列宽
$objActSheet->getDefaultColumnDimension()->setWidth(15);//默认行宽
$objActSheet->getDefaultRowDimension()->setRowHeight(20);//设置宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);//第10行高度
$objActSheet->getRowDimension('10')->setRowHeight(100);
$objActSheet->getRowDimension('10')->setRowHeight($objActSheet->getDefaultRowDimension()->getRowHeight());
设置单元格缩进
$objActSheet->getStyle('A7')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT)->setIndent(2);

//日期格式化
$spreadsheet->getActiveSheet()->setCellValue('D1', '2018-06-15');$spreadsheet->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);//设置格式为FORMAT_NUMBER避免某些大数字被使用科学记数方式显示,配合下面的setAutoSize方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5 = $objActSheet->getStyle('A5');
$objStyleA5->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00);//货币格式化
$objStyleA5->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objActSheet->getStyle('J11')->getNumberFormat()->setFormatCode('"¥"#,##0.00');//设置对齐方式
$objAlignA5=$objStyleA5->getAlignment();
$objAlignA5->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);//设置边框
$objBorderA5=$objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000');//边框color
$objBorderA5->getBottom()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);//从指定的单元格复制样式信息.
$objActSheet->duplicateStyle($objStyleA5,'B1:C22');
设置CELL背景色
//设置字体
$objActSheet->getStyle('B1:I2')->getFont()->setName('Candara');//字体
$objActSheet->getStyle('B1')->getFont()->setSize(20);//大小
$objActSheet->getStyle('B1')->getFont()->setBold(true);//加粗
$objActSheet->getStyle('B1')->getFont()->setUnderline(Font::UNDERLINE_SINGLE);//下划线
$objActSheet->getStyle('B1')->getFont()->getColor()->setARGB(Color::COLOR_WHITE);
$objActSheet->getStyle('B1')->getFont()->setSuperscript(true);//设置上标
$objActSheet->getStyle('B1')->getFont()->setSubscript(true);//设置下标//设置CELL背景色
$objActSheet->getStyle("A1:I2")->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('FFFFFF');//添加图片
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setName('Logo');
$drawing->setDescription('Logo');
$drawing->setPath('./images/officelogo.jpg');
$drawing->setHeight(36);
$drawing->setCoordinates('A1'); /*设置图片要插入的单元格*/
$drawing->setWorksheet($objActSheet);//显示网格线:
$objPHPExcel->getActiveSheet()->setShowGridlines(true);//Add a hyperlink to the sheet 添加链接
$objActSheet->setCellValue('E26', 'www.phpexcel.net');
$objActSheet->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net');
$objActSheet->getCell('E26')->getHyperlink()->setTooltip('Navigate to website');
$objActSheet->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//Add conditional formatting
$objConditional1 = new PHPExcel_Style_Conditional();
$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS);
$objConditional1->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN);
$objConditional1->setCondition('0');
$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);
$objConditional1->getStyle()->getFont()->setBold(true);//Set autofilter 自动过滤
$objActSheet->setAutoFilter('A1:C9');//设置文档安全 打开需要密码Excel2007生效
$objPHPExcel->getSecurity()->setLockWindows(true);
$objPHPExcel->getSecurity()->setLockStructure(true);
$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel");//设置工作表安全 全部只读
$objActSheet->getProtection()->setPassword('password');//设置保护密码
$objActSheet->getProtection()->setSheet(true);// This should be enabled in order to enable any of the following!
$objActSheet->protectCells('A1:C22');//Set outline levels
$objActSheet->getColumnDimension('E')->setOutlineLevel(1);
$objActSheet->getColumnDimension('E')->setVisible(false);
$objActSheet->getColumnDimension('E')->setCollapsed(true);
//设置工作表的页面方向和大小
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(\PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::ORIENTATION_LANDSCAPE);
$spreadsheet->getActiveSheet()->getPageSetup()->setPaperSize(\PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::PAPERSIZE_A4);//页面设置:缩放选项
$spreadsheet->getActiveSheet()->getPageSetup()->setFitToWidth(1);
$spreadsheet->getActiveSheet()->getPageSetup()->setFitToHeight(0);//页边距
$spreadsheet->getActiveSheet()->getPageMargins()->setTop(1);
$spreadsheet->getActiveSheet()->getPageMargins()->setRight(0.75);
$spreadsheet->getActiveSheet()->getPageMargins()->setLeft(0.75);
$spreadsheet->getActiveSheet()->getPageMargins()->setBottom(1);//指定打印区域
$spreadsheet->getActiveSheet()->getPageSetup()->setPrintArea('A1:E5,G4:M20');//PhpSpreadsheet可以在页面顶部/左侧重复特定的行/单元格。以下代码是如何在特定工作表的每个打印页面上重复第1至5行的示例
$spreadsheet->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);
在单元格中添加评论
要将注释添加到单元格,请使用以下代码。下面的示例向单元格E11添加注释:
$spreadsheet->getActiveSheet()->getComment('E11')->setAuthor('Mark Baker');
$commentRichText = $spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun('PhpSpreadsheet:');
$commentRichText->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n");
$spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.');

单元格部分文字加粗、放大、添加颜色
//创建一个富文本对象
$richText = new \PhpOffice\PhpSpreadsheet\RichText\RichText();
$richText->createText('铁扇公主');
//需要改变大小或颜色的文字内容
$payable = $richText->createTextRun('芭蕉妹妹');
$payable->getFont()->setBold(true);
$payable->getFont()->setItalic(true);
$payable->getFont()->setColor( new \PhpOffice\PhpSpreadsheet\Style\Color( \PhpOffice\PhpSpreadsheet\Style\Color::COLOR_DARKGREEN ) );
$richText->createText('牛魔王');
$spreadsheet->getActiveSheet()->getCell('A18')->setValue($richText);

//显示隐藏列
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false);
//显示隐藏行
$objPHPExcel->getActiveSheet()->getRowDimension('10')->setVisible(false);
做软件中难免会遇到数据导入的功能,而数据导入要生成一个模板,模板中有些字段是需要固定那几种的,下拉菜单,就是EXCEL中的数据有效性,简单研究一下,下面把源码贴出来:
$objValidation = $objActSheet->getCell("A1")->getDataValidation(); //这一句为要设置数据有效性的单元格$objValidation -> setType(PHPExcel_Cell_DataValidation::TYPE_LIST)-> setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION)-> setAllowBlank(false)-> setShowInputMessage(true)-> setShowErrorMessage(true)-> setShowDropDown(true)-> setErrorTitle('输入的值有误')-> setError('您输入的值不在下拉框列表内.')-> setPromptTitle('设备类型')-> setFormula1('"列表项1,列表项2,列表项3"');
列数字与字母的相互转化 超过第26个字母Z有bug
print_r(\PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString('D'));//echo 4
echo \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex(4) // echo E
//phpexcel默认是没有冻结的,下面是冻结列。定二则定全部
$sheet->freezePane('A1');
$sheet->freezePane('B1');
冻结行
$sheet->freezePane('D1');
$sheet->freezePane('D2');
不能再次定义A,b,c否则列冻结被替代
public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 0){$this->freezePane(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
}
public function unfreezePane() {$this->freezePane('');}
$worksheet->setInputEncoding("UTF-8");
//$freeze = $sheet->getFreezePane();
批量设置单元格格式
$styleArray = ['font' => ['bold' => true,],'borders' => [ //上下左右画线'allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN],],'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, //横向居中'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, //纵向居中'wrap' => true, //自动换行'indent' => 2, //缩进2个字符],'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,'rotation' => 90,'startColor' => ['argb' => 'FFA0A0A0',],'endColor' => ['argb' => 'FFFFFFFF',],],
];
$spreadsheet->getActiveSheet()->getStyle('A1:J35')->applyFromArray($styleArray);
设置外边框
$styleArray = ['borders' => ['outline' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,'color' => ['argb' => 'FFFF0000'],],],
];
$objActSheet->getStyle('B2:G8')->applyFromArray($styleArray);
获得公式计算值
$workbook->getActiveSheet()->getCell("G1")->getCalculatedValue();
获得日期的格式化数值
$workbook->getActiveSheet()->getCell("G2")->getFormattedValue();
导出
phpexcel大数据导出,数据追加(19万行,分20个sheet, 1万行是一个sheet,第一次到1个sheet数据,其他数据追加到excel,分19次覆盖对应的sheet)
先用 PhpExcel 建立reader,再load文件,这样打开已经存在的文档,然后再建立writer,将reader中的数据都复制过来,再用 PhpExcel 进行数据修改,再以load的文件名覆盖保存。
$reader = new PHPExcel_Reader_Excel2007;
$workbook = $reader->load("document.xlsx");
$workbook->getActiveSheet()->getSecurity()->setWorkbookPassword("your password");$workbook->getActiveSheet()->getCell("D1")->getValue();$workbook->getActiveSheet()->setCellValueByColumnAndRow(1, 5, 'PhpSpreadsheet');//A5的值
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(1, 5)->getValue();//第2列,第5行,B5
方法二,分批导出,导出多个文件,通过程序将所有文件加入压缩包
使用phpspreadsheet进行导出excel的时候遇到了内存溢出的问题,官方提供了memory saving的解决方案,官方文档中提供了APC、redis和memcache的缓存方案。
//关闭公式计算预处理
$writer = new Xlsx($spreadsheet);
$writer->setPreCalculateFormulas(false);
phpspreadsheet切割excel大文件导入
// 示例
$inputFileType = 'Xls';
$inputFileName = './sampleData/example2.xls';/** Define a Read Filter class implementing \PhpOffice\PhpSpreadsheet\Reader\IReadFilter */
class ChunkReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
{private $startRow = 0;private $endRow = 0;/** Set the list of rows that we want to read */public function setRows($startRow, $chunkSize) {$this->startRow = $startRow;$this->endRow = $startRow + $chunkSize;}public function readCell($column, $row, $worksheetName = '') {// Only read the heading row, and the configured rowsif (($row == 1) || ($row >= $this->startRow && $row < $this->endRow)) {return true;}return false;}
}/** Create a new Reader of the type defined in $inputFileType **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);/** Define how many rows we want to read for each "chunk" **/
$chunkSize = 2048;
/** Create a new Instance of our Read Filter **/
$chunkFilter = new ChunkReadFilter();/** Tell the Reader that we want to use the Read Filter **/
$reader->setReadFilter($chunkFilter);/** Loop to read our worksheet in "chunk size" blocks **/
for ($startRow = 2; $startRow <= 65536; $startRow += $chunkSize) {/** Tell the Read Filter which rows we want this iteration **/$chunkFilter->setRows($startRow,$chunkSize);/** Load only the rows that match our filter **/$spreadsheet = $reader->load($inputFileName);// Do some processing here
}
读取CSV内容
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Csv");
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load("/mnt/d/文档/test.csv");
$data = $spreadsheet->getActiveSheet()->toArray();
$headers = array_shift($data); //剔除表头
读取XLSX内容
$objReader = IOFactory::createReader('Xlsx');
$objReader->setReadDataOnly(TRUE);
$filename = $_FILES['inputExcelclass']['tmp_name'];
$objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
$sheet = $objPHPExcel->getSheet(0); //excel中的第一张sheet
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
for ($j = 2; $j <= $highestRow; $j++) {$data[$j - 2] = ['title' => trim($objPHPExcel->getActiveSheet()->getCell("A" . $j)->getValue()),'content' => trim($objPHPExcel->getActiveSheet()->getCell("B" . $j)->getValue()),'prices' => trim($objPHPExcel->getActiveSheet()->getCell("C" . $j)->getValue()),'create_time' => ($objPHPExcel->getActiveSheet()->getCell("D" . $j)->getValue()-25569)*24*60*60,'end_time' => ($objPHPExcel->getActiveSheet()->getCell("E" . $j)->getValue()-25569)*24*60*60,];
}
相关文章:
phpspreadsheet excel导入导出
单个sheet页Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。Excel2003的最大列数是256列,2007以上版本是16384列。 xlswriter xlswriter - PHP 高性能 Excel 扩展,功能类似phpspreadsheet。它能够处理非常大的文件࿰…...
自动驾驶传感器选型
360的场景,避免有盲区,长距离 Lidar(激光雷达) 典型特点一圈一圈的,轮廓和很高的位置精度 禾赛的机械雷达 速腾的固态雷达 固态雷达是车规级的,车规级的意思是可以装到量产车上 Radar(毫米…...
4.利用matlab符号矩阵的四则运算(matlab程序)
1.简述 符号对象的建立 sym函数 sym函数用于建立单个符号对象,其常用调用格式为: 符号对象名sym(A) 1 将由A来建立符号对象,其中,A可以是一个数值常量、数值矩阵或数值表达式(不加单引号),此时符号对象为一个符号常量;…...
Go context.WithCancel()的使用
WithCancel可以将一个Context包装为cancelCtx,并提供一个取消函数,调用这个取消函数,可以Cancel对应的Context Go语言context包-cancelCtx 疑问 context.WithCancel()取消机制的理解 父母5s钟后出门,倒计时,父母在时要学习,父母一走就可以玩 …...
STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波
今日主要学习一款倾角传感器——MPU6050,往后对单片机原理基础讲的会比较少,更倾向于简单粗暴地贴代码,因为经过前些日子对MSP432的学习,对原理方面也有些熟络了,除了在新接触它时会对其引脚、时钟、总线等进行仔细一些的研究之外…...
Ubantu安装Docker(完整详细)
先在官网上查看对应的版本:官网 然后根据官方文档一步一步跟着操作即可 必要准备 要成功安装Docker Desktop,必须: 满足系统要求 拥有64位版本的Ubuntu Jammy Jellyfish 22.04(LTS)或Ubuntu Impish Indri 21.10。 Docker Deskto…...
【从零开始学习JAVA | 第四十一篇】深入JAVA锁机制
目录 前言: 引入: 锁机制: CAS算法: 乐观锁与悲观锁: 总结: 前言: 在多线程编程中,线程之间的协作和资源共享是一个重要的话题。当多个线程同时操作共享数…...
Playable 动画系统
Playable 基本用法 Playable意思是可播放的,可运行的。Playable整体是树形结构,PlayableGraph相当于一个容器,所有元素都被包含在里面,图中的每个节点都是Playable,叶子节点的Playable包裹原始数据,相当于输…...
深入理解Linux内核--虚拟文件
虚拟文件系统(VFS)的作用 虚拟文件系统(Virtual Filesystem)也可以称之为虚拟文件系统转换(Virtual Filesystem Switch,VFS), 是一个内核软件层, 用来处理与Unix标准文件系统相关的所有系统调用。 其健壮性表现在能为各种文件系统提供一个通用的接口。VFS支持的文件…...
记一次 .NET 某外贸ERP 内存暴涨分析
一:背景 1. 讲故事 上周有位朋友找到我,说他的 API 被多次调用后出现了内存暴涨,让我帮忙看下是怎么回事?看样子是有些担心,但也不是特别担心,那既然找到我,就给他分析一下吧。 二࿱…...
关于安卓打包生成aar,jar实现(一)
关于安卓打包生成aar,jar方式 背景 在开发的过程中,主项目引入三方功能的方式有很多,主要是以下几个方面: (1)直接引入源代码module(优点:方便修改源码,易于维护&#…...
QString字符串与16进制QByteArray的转化,QByteArray16进制数字组合拼接,Qt16进制与10进制的转化
文章目录 QString转16进制QByteArry16进制QByteArray转QStringQByteArray16进制数拼接Qt16进制与10进制的转化在串口通信中,常常使用QByetArray储存数据,QByteArray可以看成字节数组,每个索引位置储存一个字节也就是8位的数据,可以储存两位16进制数,可以用uint8取其中的数…...
ElasticSearch安装与启动
ElasticSearch安装与启动 【服务端安装】 1.1、下载ES压缩包 目前ElasticSearch最新的版本是7.6.2(截止2020.4.1),我们选择6.8.1版本,建议使用JDK1.8及以上。 ElasticSearch分为Linux和Window版本,基于我们主要学习…...
JavaWeb中Json传参的条件
JavaWeb中我们常用json进行参数传递 对应的注释为RequestBody 但是json传参是有条件的 最主要是你指定的实体类和对应的json参数能否匹配 1.属性和对应的json参数名称对应 2.对应实体类实现了Serializable接口,可以进行序列化和反序列化,这个才是实体类转…...
包装类+初识泛型
目录 1 .包装类 1.1 基本数据类型对应的包装类 1.2.1装箱 1.2.2拆箱 2.初识泛型 2.1什么是泛型 2.2泛型类 2.3裸类型 2.4泛型的上界 2.5泛型方法 1 .包装类 基本数据类型所对应的类类型 在 Java 中,由于基本类型不是继承自 Object ,为了在泛型…...
基于改进的长短期神经网络电池电容预测,基于DBN+LSTM+SVM的电池电容预测
目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的客电池电容预测 完整代码: 基于长短期神经网络LSTM的公交站客流量预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/88184734 效果图 结果分析 展望 参考论文 背影 为增加电动车行…...
Python 2.x 中如何使用pandas模块进行数据分析
Python 2.x 中如何使用pandas模块进行数据分析 概述: 在数据分析和数据处理过程中,pandas是一个非常强大且常用的Python库。它提供了数据结构和数据分析工具,可以实现快速高效的数据处理和分析。本文将介绍如何在Python 2.x中使用pandas进行数据分析&am…...
获取Spring中bean工具类
获取Spring中bean工具类 工具类 package com.geekmice.springbootselfexercise.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org…...
【实战篇】亿级高并发电商项目(新建 ego_pojo、ego_mapper、ego_api、ego_provider、搭建后台项目 )十五
目录 八、 搭建 Provide 1 新建 ego_pojo 2 新建 ego_mapper 2.1编写 pom.xml 2.2新建配置文件 编辑...
【Plex】FRP内网穿透后 App无法使用问题
能搜索到这个文章的,应该都看过这位同学的分析【Plex】FRP内网穿透后 App无法使用问题_plex frp无效_Fu1co的博客-CSDN博客 这个是必要的过程,但是设置之后仍然app端无法访问,原因是因为网络端口的问题 这个里面的这个公开端口,可…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
初级程序员入门指南
初级程序员入门指南 在数字化浪潮中,编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言,明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 (一)编程语言抉择 编…...
