搜索
首页后端开发php教程用php 解析execl 的问题? + 急急急急急急

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
如何计算PHP多维数组的元素总数?如何计算PHP多维数组的元素总数?May 15, 2025 pm 09:00 PM

计算PHP多维数组的元素总数可以使用递归或迭代方法。1.递归方法通过遍历数组并递归处理嵌套数组来计数。2.迭代方法使用栈来模拟递归,避免深度问题。3.array_walk_recursive函数也能实现,但需手动计数。

PHP中do-while循环有什么特点?PHP中do-while循环有什么特点?May 15, 2025 pm 08:57 PM

在PHP中,do-while循环的特点是保证循环体至少执行一次,然后再根据条件决定是否继续循环。1)它在条件检查之前执行循环体,适合需要确保操作至少执行一次的场景,如用户输入验证和菜单系统。2)然而,do-while循环的语法可能导致新手困惑,且可能增加不必要的性能开销。

PHP中如何哈希字符串?PHP中如何哈希字符串?May 15, 2025 pm 08:54 PM

在PHP中高效地哈希字符串可以使用以下方法:1.使用md5函数进行快速哈希,但不适合密码存储。2.使用sha256函数提高安全性。3.使用password_hash函数处理密码,提供最高安全性和便捷性。

PHP中如何实现数组滑动窗口?PHP中如何实现数组滑动窗口?May 15, 2025 pm 08:51 PM

在PHP中实现数组滑动窗口可以通过函数slidingWindow和slidingWindowAverage来完成。1.使用slidingWindow函数可以将数组分割成固定大小的子数组。2.使用slidingWindowAverage函数可以在每个窗口内计算平均值。3.对于实时数据流,可以使用ReactPHP进行异步处理和异常值检测。

PHP中__clone方法怎么用?PHP中__clone方法怎么用?May 15, 2025 pm 08:48 PM

PHP中的__clone方法用于在对象克隆时进行自定义操作。使用clone关键字克隆对象时,如果对象有__clone方法,会自动调用该方法,允许在克隆过程中进行定制化处理,如重置引用类型属性以确保克隆对象的独立性。

PHP中goto语句如何使用?PHP中goto语句如何使用?May 15, 2025 pm 08:45 PM

在PHP中,goto语句用于无条件跳转到程序中的特定标签。1)它可以简化复杂嵌套循环或条件语句的处理,但2)使用goto可能导致代码难以理解和维护,3)建议优先使用结构化控制语句。整体而言,goto应谨慎使用,并遵循最佳实践以确保代码的可读性和可维护性。

PHP中如何实现数据统计?PHP中如何实现数据统计?May 15, 2025 pm 08:42 PM

在PHP中,数据统计可以通过使用内置函数、自定义函数和第三方库来实现。1)使用内置函数如array_sum()和count()进行基本统计。2)编写自定义函数计算中位数等复杂统计。3)利用PHP-ML库进行高级统计分析。通过这些方法,可以高效地进行数据统计。

PHP中如何使用匿名函数?PHP中如何使用匿名函数?May 15, 2025 pm 08:39 PM

是的,PHP中的匿名函数是指没有名字的函数。它们可以作为参数传递给其他函数,并作为函数的返回值,使代码更加灵活和高效。使用匿名函数时需要注意作用域和性能问题。

See all articles

热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

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

热门文章

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

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

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具