我php 解析execl 我用的是 php-excel-reader 工具 来解析的,但是 我现在的情况是这样的
问题一:我在读取execl 时发现读取出来的 execl 里面带有星号( * ) ,所以在存入数据库时,也是
有星号的,我想的办法是 将读取出来的星号,用空格代替,但是在存入数据库时,还是不行,不知道是不是我
的替代的位置写的不对。。问题二:重点
客户给出的execl 里面分上下2 部分,上面 是一张表中的数据,下面是另一张表中的数据,所以就是下解析这儿execl 时,要将这execl 上面的数据 对应的存到对应的表中,下面的内容,存到对应的表中,就是说execl :上面 :A 表的内容下面 :B 表的内容现在要将execl 里面解析到的数据 ,对应的存入到对应的表中。。PHP解析execl
问题一:我在读取execl 时发现读取出来的 execl 里面带有星号( * ) ,所以在存入数据库时,也是
有星号的,我想的办法是 将读取出来的星号,用空格代替,但是在存入数据库时,还是不行,不知道是不是我
的替代的位置写的不对。。问题二:重点
客户给出的execl 里面分上下2 部分,上面 是一张表中的数据,下面是另一张表中的数据,所以就是下解析这儿execl 时,要将这execl 上面的数据 对应的存到对应的表中,下面的内容,存到对应的表中,就是说execl :上面 :A 表的内容下面 :B 表的内容现在要将execl 里面解析到的数据 ,对应的存入到对应的表中。。PHP解析execl
2)你可以将上下表的内容分别存储到两个不同的excel中,分别读取信息即可。
效果是这样的 :当循环到 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];
}
只好做个示例了$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应该能看明白吧?!
报表日期:5月27日8时至5月28日8时 :
销气量(Nm3) :
用户名称 :
月销售计划1 : 河 南 省
46500002 :
24800003 :
2790000河南省小计 :
=SUM(E5:E7)1 : 安 徽 省
83700002 :
27900003 :
26660000安徽省小计 :
=SUM(E9:E11)1 : 江 苏 省
月销售计划
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)
我没看到,不好说
$data=array();//保存读到的数据
$cols;//列坐标 eg:A,B,C......。phpexcel有提供方法获得
$totalLine;//总行数,phpexcel有提供方法获得
$line=1;
for($line ;$line<=$totalLine ;$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了