Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 12:23

Utilizo o excel_reader2.php para ler uma planilha excel , seleciono as células que quero , faço o loop e cadastro no BD , sem problemas . só que ..... este não lê excel 2007 entre outros , pesquisei e encontrei o PHPExcel , consigo listar a planílha , agora não to sabendo é selecionar as células que quero . tipo :

No excel_reader2.php faço assim :
Leio todas as linhas em que a da primeira coluna não esteja vazia;
Coloco uma variável para cada coluna;
seleciono as colunas que quero ler.

error_reporting(E_ALL); require_once 'excel_reader2.php'; $data = new Spreadsheet_Excel_Reader("arquivo.xls");    for ($x = 2; $x <= count($data->sheets[0]["cells"]); $x++) {        if (($data->sheets[0]["cells"][$x][1]) != ''){     $01 = $data->sheets[0]["cells"][$x][1];     $03 = $data->sheets[0]["cells"][$x][3];     $08 = $data->sheets[0]["cells"][$x][8];     $09 = $data->sheets[0]["cells"][$x][9];     $10 = $data->sheets[0]["cells"][$x][10];     $12 = $data->sheets[0]["cells"][$x][12];     $13 = $data->sheets[0]["cells"][$x][13];     $sql = "INSERT INTO tabela (01, 03, 08, 09, 10, 12, 13)          VALUES ('$01', '$03', '$08', '$09', '$10', '$12', '$13')";     mysql_query($sql); }    } 

no PHPExcel listo tudo , mas , não estou sabendo definir as células conforme a necessidade acima.

require_once 'PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load("arquivo.xlsx"); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {     $worksheetTitle     = $worksheet->getTitle();     $highestRow         = $worksheet->getHighestRow();      $highestColumn      = $worksheet->getHighestColumn();      $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $nrColumns = ord($highestColumn) - 64;     echo '<table border="1"><tr>';     for ($row = 2; $row <= $highestRow; ++ $row) {         echo '<tr>';         for ($col = 0; $col < $highestColumnIndex; ++ $col) {             $cell = $worksheet->getCellByColumnAndRow($col, $row);             $val = $cell->getValue();             $dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);             echo '<td>' . $val . '</td>';         }         echo '</tr>';     }     echo '</table>'; } 

Desde ja agradeço qualquer ajuda.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 12:34

O valor que deseja obter seria o $val?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 12:53

sim
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 13:04

Você pode armazenar os valores em um array, depois pegar fora para usar.

Segue um exemplo

<?php $array = Array(); for($i = 1; $i <= 2; $i++) { $array[] = $i; } echo $array[0]; echo $array[1]; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 14:10

Ta quase .... da forma abaixo seleciono as células ....

require_once 'PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load("170413.xlsx"); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {     $worksheetTitle     = $worksheet->getTitle();     $highestRow         = $worksheet->getHighestRow(); // e.g. 10     $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $nrColumns = ord($highestColumn) - 64;     echo '<table border="1"><tr>';     for ($row = 2; $row <= $highestRow; ++ $row) {         echo '<tr>';         if ($highestColumn = '1') {             $cell = $worksheet->getCellByColumnAndRow($highestColumn, $row);             $val = $cell->getValue();         }         if ($highestColumn = '2') {             $cell = $worksheet->getCellByColumnAndRow($highestColumn, $row);             $val2 = $cell->getValue();         }         if ($highestColumn = '11') {             $cell = $worksheet->getCellByColumnAndRow($highestColumn, $row);             $val3 = $cell->getValue();         }         echo '<td>' . $val . '</td><td>' . $val2 . '</td><td>' . $val3 . '</td></tr>';     }     echo '</table>'; } 

Falta :
Ler somente as linhas em que a coluna A não esteja vazia ;
Não consigo ler a coluna A , pois se coloco 0 ao inves de 1 , da variável indefinida . sendo que ele entende que 1 é a coluna B.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

15-08-2013 14:59

Não seria então verificar o 0?

 if ($highestColumn == '0') { 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

16-08-2013 11:36

Desculpe a demora, estava pesquisando ....
Quando coloco 0 , sendo = ou == ele da variável indefinida .
Ta difícil, meus poucos neurônios que sobraram não estão conseguindo raciocinar .....
Não consigo ler a coluna A , se coloco '0' ele da variável indefinida, se coloco '1' ele lê a coluna B .... se defino como A me da um número 41831 no lugar da data .... pois a coluna A é uma data .
e o fato de ler somente as linhas em que a coluna A ou B não estiverem vazias , tipo eu fiz no exemplo acima do excel_reader2

if (($data->sheets[0]["cells"][$x][1]) != ''){ 

ja não consigo fazer deste tipo.

if (($highestColumn = '1') != '') { 

Agradeço qualquer ajuda.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

16-08-2013 12:44

A principio, o correto é sempre 2 iguais ==

Para definir o 0, começa o for pelo 0

for ($x = 0; $x <= count($data->sheets[0]["cells"]); $x++) {
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

16-08-2013 13:35

Ja consegui ler as colunas que quero e eliminar as linhas em que a coluna A estejam em vazio, não sei se é a maneira correta de escrever o código , mas esta funcionando.

error_reporting(E_ALL); require_once 'PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load("170413.xlsx"); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {     $worksheetTitle     = $worksheet->getTitle();     $highestRow         = $worksheet->getHighestRow(); // e.g. 10     $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $nrColumns = ord($highestColumn) - 64;     echo "<table border='0'>"; // navegar na linha for($linha=2; $linha<= $highestRow; $linha++){     echo "<tr>";  // navegar nas colunas da respectiva linha     for($coluna=0; $coluna<= 0; $coluna++){         if (($objPHPExcel->getActiveSheet()->getCellByColumnAndRow('0', $linha)->getValue()) != ''){             echo "<td>".utf8_encode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow('0', $linha)->getValue())."</td>";             echo "<td>".PHPExcel_Shared_Date::ExcelToPHPObject($objPHPExcel->getActiveSheet()->getCellByColumnAndRow('0', $linha)->getValue())->format('d/m/Y')."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('2', $linha)->getValue()."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('7', $linha)->getValue()."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('8', $linha)->getValue()."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('9', $linha)->getValue()."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('10', $linha)->getValue()."</td>";             echo "<td>".$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('12', $linha)->getValue()."</td>";     }     }     echo "</tr>"; } echo "</table>";} 

Consegui também acertar a DATA ! VLW !
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mudando do excel_reader2 para PHPExcel , selecionar células

16-08-2013 13:46

:up:
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado