目录
回复讨论(解决方案)
首页 后端开发 php教程 用php 解析execl 的问题? + 急急急急急急

用php 解析execl 的问题? + 急急急急急急

Jun 23, 2016 pm 02:16 PM

PHP 解析execl

我php 解析execl 我用的是 php-excel-reader 工具 来解析的,但是 我现在的情况是这样的
问题一:我在读取execl 时发现读取出来的 execl 里面带有星号( * ) ,所以在存入数据库时,也是
有星号的,我想的办法是 将读取出来的星号,用空格代替,但是在存入数据库时,还是不行,不知道是不是我
的替代的位置写的不对。。

问题二:重点
客户给出的execl 里面分上下2 部分,上面 是一张表中的数据,下面是另一张表中的数据,所以就是下解析这儿execl 时,要将这execl 上面的数据 对应的存到对应的表中,下面的内容,存到对应的表中,就是说

execl :

上面 :A 表的内容

下面 :B 表的内容

现在要将execl 里面解析到的数据 ,对应的存入到对应的表中。。

回复讨论(解决方案)

没有人朋友知道的。忘指点 

不会用php解析excel

不过如果急着用的话,又如果客户给出的excel表数量很有限的话

可以用navicat这个软件直接将表存入数据库 然后再用PHP来操作

我之前就是这样做的,绕开了自己不明白的地方.... 虽然对技术提升不利但是对于追求结果来说挺有效的...

另:navicat的导入功能很强大......

1)你通过PHP读取excel数据,除去表头的一行数据,那剩下的就是实际数据,根据判断是否有*号,替换就可。
2)你可以将上下表的内容分别存储到两个不同的excel中,分别读取信息即可。

回复 3 楼 的朋友,您给出的第1分方法是对的,正解, 第2个方法,将他们分成2个execl ,这样主要是客户部同意,说用软件就是简化操作,这样跟没有有什么区别。。我只能在想其他办法了。。。谢谢

回复 2 楼的朋友, navicat这个是 mysql 的一个开发工具,我是要将execl 上传后再存入数据库的,你给出的这个方法不是很好。。谢谢

第二个问题,最好的办法是一个sheet保存一个表的数据,这样导入时比较容易解释。如果实在要在一个sheet里保存两个表的数据,那么也可以定义好分隔条件(比如两个表中间空开2行),然后循环处理行,判断行是否分隔行,分隔行后的就是第二个表的数据了。

回复 6 楼  ,恩,您的这个想法还是不错了,我考虑下,在写代码。。谢谢 


效果是这样的 :当循环到 9920000 (河南省小计) 这里就停止了,因为不能将这条数据插入到数据库里面,应该是到这里就终止,并跳到下一次循环。我使用了break; ,continue; 这2个退出循环,都是将空值插入到数据库里面了。求我哪里写错了,我这里写的是循环 【 月销售计划 】这列,当到  9920000 就应该停止。
 

if($month_sales_plan=$data->sheets[0]['cells'][8][2]){
$month_sales_plan;
echo $month_sales_plan;
                        break;

 }
 else{
$month_sales_plan=$data->sheets[0]['cells'][$i][5];
 }

没看明白你的代码,建议:导入的excel表,必须是按规定格式的,而这个格式必须是程序可以解释的,然后在程序中解释成你要的数据就可以了。

其实我的需求是:大家可以看 8 楼 的图片,就是循环当遇到 小计,合计这样的字段时,就跳过,继续循环。。一直到循环结束。

即既没有给出代码,也没给出数据文件
只好做个示例了

$PHPExcel = new PHPExcel_Reader_Excel5();$sheet = $PHPExcel->load('test1.xls')->getActiveSheet();$allRow = $sheet->getHighestRow();for($i=1; $i<=$allRow; $i++) {  if($sheet->getCell("B$i")->getValue() != '')     echo $sheet->getCell("B$i")->getValue() . ' : ' . $sheet->getCell("C$i")->getValue(), '<br>';}
登录后复制
A : 4650000
B : 2480000
C : 2790000
D : 8370000
E : 2790000
F : 26660000

应该能看明白吧?!

11 楼的兄弟,我有点不明白, 您用的是什么工具phpexecl 吗??,我用的是excel_reader2.php 这个文件,phpexecl 我刚才下载了个1.7.9 版本的,我用我的 excel_reader2.php  不行 ,现在用phpexecl1.7.9版本运行您的代码,效果是这样的,如下图,里面没有数据,

11楼的朋友, 通过  echo $sheet->getCell("B$i")->getValue() 能取出对应的值,但是跟小计,跳过有什么关系,我没明白。。忘 指点。。

西气东输天然气购销日报表 : 
报表日期:5月27日8时至5月28日8时 : 
销气量(Nm3) : 
用户名称 : 
月销售计划1 : 河 南 省
46500002 : 
24800003 : 
2790000河南省小计 : 
=SUM(E5:E7)1 : 安 徽 省
83700002 : 
27900003 : 
26660000安徽省小计 : 
=SUM(E9:E11)1 : 江 苏 省

11 楼的兄弟, 我在里面加了一句输出的 语句 echo $sheet->getCell("E$i")->getValue()."
";

这里可能会出现一种情况,就是 月销售计划里面的   4650000,2480000,2790000 这些可能每个execl里面的内容不同所以根据 $sheet->getCell("E$i")->getValue() 来取肯定是不准确的,所以做好是根据小计,或=SUM 这样的字眼 去判断,也就是到 这样的字眼时,就跳过,继续循环,这个我就不会了,我写的判断好像不起作用。。

效果:
月销售计划
4650000
2480000
2790000
=SUM(E5:E7)
8370000
2790000
26660000
=SUM(E9:E11)
4650000
15500000
8680000
6200000
310000
2790000
3720000
4030000
3100000
4960000
2170000
1550000
2480000
3720000
1550000
=SUM(E13:E27)
6200000
6200000
4650000
4650000
1240000
1240000
=SUM(E8,E12,E28,E30,E32,E34)

具体应依据哪列去读哪列,与你的 execl 文件有关
我没看到,不好说

不是,我不知道要怎么去写这个判断语句。。

11 楼的兄弟,您看看这个execl , 怎么让, execl 中的 所有小计行,在存入数据库时,都不存数据库,

 求  解析execl 出现 这样的execl 的函数, SUM(J9:J11) ,怎么办,怎么将他转为对应的 具体数值。。求

当execl 中使用了SUM 这样的函数,解析出来的 就是如下图所示的

来个php 的大神,求解决方案,不胜感激

把你的 execl 文件放在公网上,并分享出来

22 楼的朋友, 我上传了,网址  http://download.csdn.net/my

22 楼的朋友, 我上传到我的  【资源】 里面了,您帮忙看下,我不知道为什么 解析出来的会是 函数。而不是数字,

还是没人回复我啊 

11 楼的兄弟,您看看这个execl , 怎么让, execl 中的 所有小计行,在存入数据库时,都不存数据库,

$data=array();//保存读到的数据
$cols;//列坐标 eg:A,B,C......。phpexcel有提供方法获得
$totalLine;//总行数,phpexcel有提供方法获得
$line=1;
for($line ;$line       $row=array();//一行数据
      foreach($cols as $col){
          $coor=$col.$line;//坐标 eg:A1,B1,C1.....
          $value;//通过phpexcel提供的方法拿到的对应$coor的值
          if(preg_match('/小计/',$value)){//此处做判断,
               break; //如果读到“小计”则换行
          }else{
              $row[]=$value;
          }
      }
      $data[$line]=$row;
}

//接下来把$data保存进数据库就ok了








恩,谢谢,我在试试

这么规则的excel表格,怎么不好读取了。如果怕直接插入有问题,可以将循环出来的数组存数组,手动筛除不需要的数据,避免逻辑判断(什么时候跳出循环。。),基本上也就很快搞定了。

28 楼 的朋友  手动筛选?? 不是很里面, 我不会是读取出来后,在让客户区筛选哪些存数据库吧,这样客户会不爽的。。

当读取到小计一行跳过啊··· 合并过的又不规则,要吗你转成cvs好很多

· 合并过的又不规则,要吗你转成cvs好很多???? 为什么要转成cvs 的?转成cvs 的就没有了吗?我是想,判断如果读到合计这样的字样就跳过。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1673
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

您如何防止PHP中的SQL注入? (准备的陈述,PDO) 您如何防止PHP中的SQL注入? (准备的陈述,PDO) Apr 15, 2025 am 12:15 AM

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

See all articles