PHP读取Excel数据

如何用PHP读取Excel文件数据及内容信息   在文章开始介绍前,大家需要了解一下PHPExcel是什么?PHPExcel 就是一个用来操作Office Excel 文档的PHP类库。接下来讲解如何利用PHPExcel类库将Excel表格内的信息内容读取出来,完整代码如下: <?php $fileName = "1.xls"; if (!file_exists($fileName)) { return "文件不存在!"; }... 阅读详情

承接上篇

处理中-内容的处理

设置reader和编码
$file_path = 'test.xls';
$excel5_reader = new PHPExcel_Reader_Excel5();
$excel5_reader->_defaultEncoding = $encoding;
$excel2007_reader = new PHPExcel_Reader_Excel2007();
$excel2007_reader->_defaultEncoding = $encoding;
$reader = null;

if($excel5_reader->canRead($file_path)) {
	$reader = $excel5_reader;
} elseif($excel2007_reader->canRead($file_path))  {
	$reader = $excel2007_reader;
} else {
	return array();
}
处理多sheet和遍历内容
  • 核心方法:$all_sheets = $table_object->getAllSheets();
$table_object = $reader->load($file_path);
$all_sheets = $table_object->getAllSheets();
$i = 0;
foreach ($all_sheets as $key => $sheet_obj) {
    $sheet_title = $sheet_obj->getTitle();
	$row_iterator = $sheet_obj->getRowIterator();
	foreach ($row_iterator as $k1 => $row_obj) {
	    $cell_iterator = $row_obj->getCellIterator();
	}
}
处理样式
  • 核心方法: $cell_obj->getStyle();
  • 下述方法为转化为css标准样式,可以直接拿来使用
$style_object = $cell_obj->getStyle();
$style = [];//css标准样式

$fill_object = $style_object->getFill();
$font_object = $style_object->getFont();
$borders_object = $style_object->getBorders();
$alignment_object = $style_object->getAlignment();

$fill_type = $fill_object->getFillType();

if (PHPExcel_Style_Fill::FILL_SOLID === $fill_type) {
	$color = $fill_object->getStartColor()->getRGB();
	$style['background-color'] = '#'. $color;
}

$top_border_style = $borders_object->getTop()->getBorderStyle();
$top_border_color = $borders_object->getTop()->getColor()->getRGB();
$top_border_style = $this->_trick_excel_border_style($top_border_style);
if (PHPExcel_Style_Border::BORDER_NONE !== $top_border_style) {
	$style['border-top'] = '1px '. $top_border_style . ' #' . $top_border_color;
}

$left_border_style = $borders_object->getLeft()->getBorderStyle();
$left_border_color = $borders_object->getLeft()->getColor()->getRGB();
$left_border_style = $this->_trick_excel_border_style($left_border_style);
if (PHPExcel_Style_Border::BORDER_NONE !== $left_border_style) {
	$style['border-left'] = '1px '. $left_border_style . ' #' . $left_border_color;
}

$bottom_border_style = $borders_object->getBottom()->getBorderStyle();
$bottom_border_color = $borders_object->getBottom()->getColor()->getRGB();
$bottom_border_style = $this->_trick_excel_border_style($bottom_border_style);
if (PHPExcel_Style_Border::BORDER_NONE !== $bottom_border_style) {
	$style['border-bottom'] = '1px '. $bottom_border_style . ' #' . $bottom_border_color;
}

$right_border_style = $borders_object->getRight()->getBorderStyle();
$right_border_color = $borders_object->getRight()->getColor()->getRGB();
$right_border_style = $this->_trick_excel_border_style($right_border_style);
if (PHPExcel_Style_Border::BORDER_NONE !== $right_border_style) {
	$style['border-right'] = '1px '. $right_border_style . ' #' . $right_border_color;
}

$font_size = $font_object->getSize();
if (isset($font_size) && $font_size > 11) {
	$style['font-size'] = $font_size . 'px';
}
$font_color = $font_object->getColor()->getRGB();
if (isset($font_color) && $font_color != '000000') {
	$style['color'] = '#' . $font_color;
}

$font_bold = $font_object->getBold();
if ($font_bold) {
	$style['font-weight'] = 'bold';
}
$font_italic = $font_object->getItalic();
if ($font_italic) {
	$style['font-style'] = "italic";
}
$font_underline = $font_object->getUnderline();
if ($font_underline && $font_underline != PHPExcel_Style_Font::UNDERLINE_NONE) {
	$style['text-decoration'] = "underline";			
}
$font_strikethrough = $font_object->getStrikethrough();
if ($font_strikethrough) {
	$style['text-decoration'] = "line-through";
}

$horizontal = $alignment_object->getHorizontal();
if ($horizontal != 'general') {
	$style['text-align'] = $horizontal;
}

$vertical = $alignment_object->getVertical();
if ($vertical != 'bottom') {
	$style['vertical-align'] = $vertical;
}
获取数据
  • 核心方法:$cell_obj->getCalculatedValue();
  • 注意防止注入
$cell_obj->getCalculatedValue();//会处理公式和富文本的值 string
$cell_obj->getValue();//不处理公式和富文本的值,存在多种类型


处理超链接

核心方法:$cell_obj->getHyperlink()->getUrl();

$value = $cell_obj->getCalculatedValue();
$url = $cell_obj->getHyperlink()->getUrl();
$link = '<a href="'.$url.'" target="_blank">' . $value . '</a>';
处理公式
  • $cell_obj->getValue();
  • 需要先判断是否是公式值
  • 返回格式string,ie A1:E1
if (!$cell_obj->isFormula()) {
	return null;
}
$value = $cell_obj->getValue();//A1:E1
preg_match('/([a-zA-Z]+)\(([a-zA-Z]+)(\d+)\:([a-zA-Z]+)(\d+)\)/', $value, $ranges); // 获得ranges范围
if (empty($ranges[1])) {
	return null;
}

合并单元格
  • $merges = $sheet_obj->getMergeCells();
  • 返回的是merge数据数组
$merges = $sheet_obj->getMergeCells();

if (empty($merges)) {
	return null;
}

$merge_info = [];
foreach ($merges as $k => $merge) { //A1:E1
	preg_match('/([a-zA-Z]+)(\d+)\:([a-zA-Z]+)(\d+)/i', $merge, $ranges); //获得range范围 
	//todo something
}
列宽和行高
//行高
$row_iteratior = $sheet_obj->getRowIterator();
$row_hights = [];//实际行高值

$i= 0;
foreach ($row_iteratior as $k => $row) {
	$row_height = (int)($sheet_obj->getRowDimension($k)->getRowHeight());

	$row_hights[$i] = $row_height;
	$i++;
}
//列宽
$col_iteratior = $sheet_obj->getColumnIterator();
$col_widths = [];//实际列宽值

$i= 0;
foreach ($col_iteratior as $k => $col) {
	$col_width = (int)($sheet_obj->getColumnDimension($k)->getWidth())*7;
	$col_widths[$i] = $col_width;
	$i++;
}
表格冻结

$freeze = $sheet_obj->getFreezePane(); // 返回 ie: A2

其他问题

空的sheeft的处理
  • 有样式,无数据
  • 默认边框和空白边框的处理
横坐标处理

Excel的横坐标为A、B…、AA、AB类型,需要转化坐标。

private function _get_sheet_col_key($label) {

	$col_key_map = [];
	$abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	for ($i=0; $i < 600; $i++) {
		$a = (int)($i / 26);
		$b = $i % 26;
		$column_label = '';
		if ($a == 0) {
			$column_label = $column_label . substr($abc, $b, 1);
		} else {
			$a = $a -1;
			$column_label = substr($abc, $a, 1) . substr($abc, $b, 1); 
		}
		$col_key_map[$column_label] = $i; 
	}
	return $col_key_map[$label];
}

原文地址

Ansys Lumerical 2023 R1.2新功能实战:薄膜铌酸锂调制器仿真全流程解析 本文详细解析了Ansys Lumerical 2023 R1.2在薄膜铌酸锂电光相位调制器仿真中的最新功能与应用。通过实战演示,展示了从电极配置、电场计算到模式分析的全流程,重点介绍了各向异性介电常数支持和多物理场耦合优化等关键技术,助力开发者高效设计高性能光通信器件。 阅读详情

相关推荐

Mask2Former实战:用SwinTransformer+Deformable Attention搞定图像分割三大任务

本文实战解析了Mask2Former模型如何统一解决语义、实例和全景分割三大任务。通过集成Swin Transformer骨干网络与创新的Deformable Attention及Masked Attention机制,详细介绍了模型构建、训练策略及在COCO数据集上的性能表现,为开发者提供了高效的图像分割解决方案。

tech5的博客 246

PHPexcel使用

最近在微擎里用到了excel文件导入,这里记录一下,直接上代码 //引入phpexcel require_once MODULE_ROOT.'/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php'; //载入文件 $objPHPExcelReader = PHPExcel_IOFactory::load($_GPC['myFile']); //循环展示 ...

gegephp的博客 225

手把手教你用OpenClaw+飞书打造论文写作AI助手(附踩坑实录)

面对几十篇文献,逐一阅读摘要都费时。我:“请提取桌面‘论文参考文献’文件夹中所有PDF的摘要,整理成表格,包含:论文标题、作者、发表年份、核心方法、主要结论。AI助手:“正在处理...已提取18篇论文摘要,汇总表格已保存到桌面‘文献摘要汇总.xlsx’。这比我自己一个个打开PDF复制粘贴快了不止100倍。OpenClaw+飞书的组合,让AI真正成为了我的“数字员工”。虽然配置过程有些曲折,但看到它在飞书里回应指令、帮我处理繁琐工作时,那种成就感无可替代。如果你也在准备论文,不妨试试这套方案。记住,

AcademicIdeas的博客 1041

PhpSheet整理

弄给自己留着看的,以防之后再用到忘了。just官方文档+网友版中文文档+百度翻译产物。

qq_44796300的博客 735

先进封装技术的一些优缺点探讨

半导体封装技术是半导体制造过程中的关键环节,它不仅保护了芯片免受物理损伤,还提供了电气连接和散热功能。随着技术的发展,出现了多种先进的封装技术,每种技术都有其特定的应用场景和优缺点。

阿拉伯梳子的专栏 2169

【免费】最新区块链钱包和私钥的助记词碰撞器,使用python开发

最新钱包私钥助记词碰撞器,搏一搏单车变摩托!

weixin_48529185的博客 1万+

php读取excel

&lt;?php require_once "PHPExcel\PHPExcel.php"; //读数据 $filename = 'C:\wamp\www\aa\2.xls'; $objReader = PHPExcel_IOFactory::createReaderForFile($filename);; //准备打开文件 $objPHPExcel = $objReader-&gt;loa...

loveyoulouyou的博客 268

晶闸管选型参数,结构原理,工艺与注意问题总结

闸管(Thyristor)是一种半导体开关器件,也被称为可控硅整流器(SCR, Silicon Controlled Rectifier)。它可以在高电压和大电流条件下工作,常被用于交流电的控制和整流。本文对晶闸管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1283

PHP(3):PHP读取Excel文件的记录-方法1

  因为工作需要将Excel的文件记录读出再写入数据库中,之前使用的是VBS,可是那也不是正规的应用程序,使用PowerBuilder也可以,但是PowerBuilder毕竟只是临时使用,C#好长时间不用了,就打算使用最近学习的PHP来操作。   下班后就开始干,折腾了将近4个小时,终于搞定了,遇到了好多的坑,快崩溃了,想一想为这些肤浅的代码所累,程序员的日子不好过!   要使用PHP读取Excel的文件记录,查了资料都是使用PHPExcel这个文件包,并且全部都要使用Composer来安装,结果遇到了

dawn0718的专栏 1200

RAGFlow 系列教程 第14课:GraphRAG -- 知识图谱增强检索

RAGFlow v0.25.0深度解读了GraphRAG技术,通过构建知识图谱解决传统RAG在多跳推理问题上的局限。系统支持General GraphRAG和Light GraphRAG两种实现,包含四阶段构建流程:实体关系抽取、实体消解、社区检测和图持久化。核心代码位于rag/graphrag目录,采用LLM驱动的抽取机制,结合编辑距离和LLM确认的实体消解策略,以及Leiden社区检测算法。KGSearch模块通过多信号融合检索(实体+关系+N-hop+社区)实现高效查询。该系统将非结构化文本转化为可推

weixin_43674738的博客 101

无人机视角下基于YOLOv5/v8/v10的车辆检测系统:从算法原理到UI界面实战

随着无人机技术的普及和智慧城市的发展,无人机视角下的车辆检测在交通监控、战场侦察、灾害救援等领域展现出巨大的应用价值。然而,无人机航拍图像存在目标尺度小、视角多变、背景复杂等挑战。本文深入探讨了如何利用YOLOv5、YOLOv8、YOLOv10三个代表性目标检测算法,构建一套完整的无人机车辆检测系统。文章不仅详细解析了各版本YOLO的核心技术演进,还提供了从数据集准备、模型训练、性能评估到基于PyQt5/PySide6的图形界面开发的完整代码实现。通过本文,读者将能够掌握构建无人机实时车辆检测系统的全流程技

YOLO 172

PHP不读取Excel空行,phpexcel中遇到空单元格不跳过

phpexcel中遇到空单元格不跳过之前用phpexcel类,代码是这样写的:/* 导入excel文件 */$fileType = PHPExcel_IOFactory::identify($destination); //自动获取文件的类型提供给phpexcel用$objReader = PHPExcel_IOFactory::createReader($fileType); //获取文件读取操...

weixin_42244905的博客 1551

YOLOv12改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 1509

PHP读取excel文件内容、获取单元格数据

php读取excel文件,并进行相应处理的具体方法 代码示例如下: <?php /*读取excel文件,并进行相应处理*/ $fileName = "url.xls"; if (!file_exists($fileName)) { exit("文件".$fileName."不存在"); } $startTime = time(); //返回当前时间的Unix 时间戳 require...

佰草伐 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

php读取Excel数据

在PHP中读取Excel数据可以使用PhpSpreadsheet库,这是一个功能强大的库,支持读取、写入和操作Excel文件(包括XLSX、XLS、CSV等格式)。下。

rock365的博客 680

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php读取excel数据保存到mysql_php读取excel并存入数据库

header("Content-Type:text/html;charset=utf-8");$dir = dirname(__FILE__);require $dir . '/Excel/PHPExcel/IOFactory.php'; //引入PHP EXCEL类$filename = $dir . "/storage_num.xls";$fileType = PHPExcel_IOFacto...

weixin_42116791的博客 254

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

php 读取excel 数字,php如何读取excel中的数据

1、搭建php程序运行环境来执行程序,只要能让程序运行起来就行2、下载PHPExcel.php类文件以及相关组件3、包含到要运行的文件中 require PHPExcel.php,创建对象默认用excel2007读取excel,若格式不对,则用之前的版本进行读取4、读取excel的工作表可以是多个,如果你只需要读取第一个那么就用 $PHPExcel->getSheet(0) , 如果是多个就...

weixin_42169971的博客 604

PHP读取Excel和导出数据至Excel

excel作为办公环境中最常用的数据处理工具,使用的人群很广泛。但当你有一些比较复杂的处理场景时,仅靠一些表面的简单的操作肯定是满足不了要求的。这时如果让我临时学习vba编程,感觉有点难度,因为我只会C和PHP,于是借这个机会,我查阅了一些资料,发现PHP有开源的工具库PHPExcel,功能很强大,很实用。本文介绍了如何使用PHPExcel实现excel读取和导出数据库表至excel里面,相信会对大家有所帮助。

m0_47175673的博客 622

php批量导入多个excel,批量提取多个excel表格数据|php读取excel,excel下多个个工作表,该怎么读取...

怎么用Java读取两个Excel里的数据并进行可以用GCExcel这个组件,GCExcel涵盖了几乎所有的Excel基本操作,并且可以无损导入/导出 Excel ,包括数据透视表、图表、注释、条件格式、数据验证、公式、形状、图片、迷你图和表格,完全参照Excel的规范。适用于所有 Java 6.0 及以上标准的平台,无需 Microsoft Excel 依赖 ,即可快速批量操作 Excel 文件,...

weixin_42188533的博客 987

php读取excel文件的数据,如何使用php获取excel文件数据

如何使用php获取excel文件数据文章主要介绍了php获取excel文件数据的方法。具有很好的参考价值。下面跟着小编一起来看下吧。1、下载PHPExcel类,是一个文件夹,还得有一个文件PHPExcel.php,两个在同级目录?12345678910111213141516171819202122232425262728293031323334353637require __DIR__ . '....

weixin_32519033的博客 1076

php读取excel文件数据

PHP读取excel文件数据一般用phpexcel插件,但这个插件目前已经不再维护,改用phpspreadsheet,可以从github上clone。 该插件读取excel数据还是很方便的,代码如下: require_once '.../vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php'; class ReadExcelCo...

lucas1018的博客 658

php获取excel表格内容,如何用PHP读取excel文件内容、获取单元格数据

码农公社 210.net.cn210= 102410月24日一个重要的节日--码农(程序员)节涉及相关知识点:①PHPExcel是用来操作Office Excel 文档的一个PHP类库,它基于微软的Openxml标准和PHP语言。可以使用它来读取、写入不同格式的电子表格。该类可上网搜索"PHPExcel"即可寻获。一般会下载到一个名为“PHPExcel-1.x.zip"压缩包,将其解压...

weixin_29323551的博客 1154

php读取excel写入数据库,PHP读取EXCEL文件写入数据库

PHP读取ECEL文件写入数据库功能的实现使用到了PHPExcel类库。完整代码如下:$uploadfile="../upload_files/".basename($_FILES['userfile']['name']);$message="";if(@move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)){//文件上传服...

weixin_34480323的博客 809

php读取excel公式取值,php phpexcel 读取excel文件数据

public function readExcel(){$allPath = '/home/examine\video/list.xls';\think\Loader::import('extend.excel.PHPExcel', ROOT_PATH);$PHPExcel = new \PHPExcel();$redis = new \app\common\service\Redis();/* ...

weixin_39568233的博客 467

php读取excel的数据,php读取excel文件数据

require_once $_SERVER[‘DOCUMENT_ROOT‘].‘/Classes/PHPExcel.php‘;require_once $_SERVER[‘DOCUMENT_ROOT‘].‘/Classes/PHPExcel/IOFactory.php‘;function getReadExcel($uploadfile,$time){$extension = substr($up...

weixin_39788131的博客 162

php读取excel存入mysql数据库_php excel reader读取excel内容存入数据库实现代码

很多新手朋友对于如何使用php-excel-reader读取excel内容存入数据库,甚是疑惑,本文将介绍详细的解决方案,需要了解的朋友可以参考下上一篇文章介绍了php-excel-reader读取excel文件的方法,因为需要,将excel这样的数据:新建数据库表如下:-- 数据库: `alumni`-- 表的结构 `alumni`CREATE TABLE IF NOT EXISTS `alum...

weixin_36276175的博客 306
上一篇: 导出数据到Excel的实用方案
gglinux
博客等级 码龄14年 68粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值