Ich versuche, eine Excel-Datei in CSV zu konvertieren, wenn Benutzer auf Update-Taste klicken.Convert (xls, xlsx) in CSV vor Upload mit PHP
Seine Arbeit, wenn ich eine Datei in dem Ordner Excel laden dann bekomme ich diese Datei PHPExcel verwenden und alle Daten auslesen und in das CSV konvertieren.
Hier ist der Code.
<html>
<head>
<meta charset="UTF-8">
</head>
<?php
ini_set("display_errors", "1");
ini_set("memory_limit", "-1");
ini_set("max_execution_time", "-1");
error_reporting(1);
require_once "PHPExcel.php";
$dir = "../excel2csv/"; // Main Directory Name
$file_arr = array();
$file_ext_arr = array('xls','xlsx'); // Valid Extensions of Excel File
// From Directory get only Excel Files in Array
if(is_dir($dir))
{
if($dh = opendir($dir))
{
while(($file = readdir($dh)) !== false)
{
$info = new SplFileInfo($file);
$ext = $info->getExtension(); // Get Extension of Current File
if(in_array($ext,$file_ext_arr))
{
array_push($file_arr, $file);
}
}
closedir($dh);
}
}
// Make CSV File
$fp = fopen('file.csv', 'a');
$list = array();
foreach($file_arr as $val)
{
$arr_data = array();
$objPHPExcel = PHPExcel_IOFactory::load($dir . $val);
$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
foreach($cell_collection as $cell)
{
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
//header will/should be in row 1 only. of course this can be modified to suit your need.
// Skip Rows From Top if you have header in Excel then Change 0 to 1
if($row == 0)
{
$header[$row][$column] = $data_value;
}
else
{
$arr_data[$row]['row'] = $row;
$arr_data[$row][$column] = $data_value;
}
}
$data = $arr_data;
foreach($data as $val1)
{
$num_col = sizeof($val1) - 1; // get number of columns in Excel
break;
}
$lwrcol=array();
foreach($data as $val2)
{
$alphaArr = range('A','Z');
$colArr = range('A',$alphaArr[$num_col - 1]);
foreach($colArr as $col)
{
$lwrcol[$col] = isset($val2[$col]) ? utf8_decode($val2[$col]) : "";
fwrite($fp,$lwrcol[$col].",");
}
fwrite($fp,"\n");
}
chmod(getcwd()."/file.csv", 0777);
}
fclose($fp);
?>
</html>
In obigem Code vor allem ich alle bin zu finden Excel-Dateien aus dem Ordner und eine file.csv
Datei.
Was ich tun möchte, ist, wenn der Benutzer eine beliebige Datei in <input type="file" name="upload"/>
auswählen und auf UPLOAD-Taste, nachdem dann in Back-End ersten Prozess konvertieren Excel in CSV VOR Datei, die es Ordner hochladen bewegen.
So wie ich Ihr Code arbeitet für die Umwandlung von 'Excel' zu' CSV' sehen können, aber Sie haben keinen Code geschrieben für die erste von 'input' hochladen. Richtig? – Manwal
all dieser Code ist in '