これは私のExcelシートです たくさんの列がありますが、質問を理解しやすくするために分解しています
PHP Excel とrangeToArray()を使用してExcelシートを読んでいます。これにより、Excelからすべての行が取得されますが、次のように出力する必要があります。
キーとしての列:値としてのセル値
現在、次のように出力されます
列インデックス:セル値
だから私の質問は、列名とセル値を持つ配列を返すPHPExcelの関数はどれですか?
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 2; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
printArr($rowData);
printArr("-------");
}
私は次のように出力を取得します
Array
(
[0] => Array
(
[0] => 27745186
[1] => 42058
[2] => Dell INTERNATIONAL SERVICES INDIA PVT LTD
...
...
)
[1] => Array
(
[0] => 27745186
[1] => 42058
[2] => Dell INTERNATIONAL SERVICES INDIA PVT LTD
...
...
)
)
欲望の出力
Array
(
[0] => Array
(
[Invoice_no] => 27745186
[Invoice Date] => 42058
[Description] => Dell INTERNATIONAL SERVICES INDIA PVT LTD
...
...
)
[1] => Array
(
[Invoice_no] => 27745186
[Invoice Date] => 42058
[Description] => Dell INTERNATIONAL SERVICES INDIA PVT LTD
...
...
)
)
PHPExcelには魔法はありませんが、標準のPHPでは非常に簡単です。
最初の行から必要な見出し/キーを取得します
$headings = $sheet->rangeToArray('A1:' . $highestColumn . 1,
NULL,
TRUE,
FALSE);
次に、標準の数値キーをリセットして、各データ行の読み取りループ内の見出し値にします。
for ($row = 2; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
$rowData[0] = array_combine($headings[0], $rowData[0]);
}
この関数は、A1、A2、B1、B2のような参照のタイトルを書かないように作成しています。そして動作します。
public function createExcel($titulos, $datos, $tituloLibro = 'The title')
{
$phpExcelObject = //instance it;
$phpExcelObject->getProperties()->setCreator("Your name")
->setLastModifiedBy("yourweb.com")
->setTitle($tituloLibro)
->setSubject($tituloLibro)
->setDescription($tituloLibro)
->setKeywords("")
->setCategory($tituloLibro);
$i = 0;
$phpExcelObject->setActiveSheetIndex(0);
foreach ($titulos as $titulo)
{
$phpExcelObject->getActiveSheet()->getCellByColumnAndRow($i,1)->setValue($titulo);
$i++;
}
$j = 2;
foreach ($datos as $filas)
{
$i = 0;
foreach ($filas as $fila)
{
$phpExcelObject->getActiveSheet()->getCellByColumnAndRow($i,$j)->setValue($fila);
$i++;
}
$j++;
}
// your logic
}
foreach ($cell_collection as $cell)
{
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
if ($row == 1)
{
$header[$row][$column] = $data_value;
}
else
{
$arr_data[$row][$column] = $data_value;
}
}