Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用phpexcel将csv文件导入mysql,但前导零正在删除_Mysql_Csv_Phpexcel - Fatal编程技术网

使用phpexcel将csv文件导入mysql,但前导零正在删除

使用phpexcel将csv文件导入mysql,但前导零正在删除,mysql,csv,phpexcel,Mysql,Csv,Phpexcel,我的csv文件中的数据如下所示。当我尝试使用下面的代码时,前导零正在删除。文章编号没有固定长度。它可以是任意长度 000086;Grand Trunk Schlafsack, grün;892902000086;1;34,27 000109;Grand Trunk Hängematte, grün;0892902000109;1;15,57 BD159-150-2XL;Grand Trunk Hängematte, blau;0892902000116;1;15,57 BD240-150-44;

我的csv文件中的数据如下所示。当我尝试使用下面的代码时,前导零正在删除。文章编号没有固定长度。它可以是任意长度

000086;Grand Trunk Schlafsack, grün;892902000086;1;34,27
000109;Grand Trunk Hängematte, grün;0892902000109;1;15,57
BD159-150-2XL;Grand Trunk Hängematte, blau;0892902000116;1;15,57
BD240-150-44;Grand Trunk Hängematte, blau;0892902000116;1;15,57
BD235-200-35/38;Grand Trunk Hängematte, blau;0892902000116;1;15,57
下面是我使用phpexcel将csv导入mysql的代码

$objReader = PHPExcel_IOFactory::createReader('CSV');  
try {
        $inputFileType = 'CSV';
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objReader = $objReader->setDelimiter(";");
        $objPHPExcel = $objReader->load($inputFileName); 
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$NewArray = $objPHPExcel->getActiveSheet()->toArray();
 echo '<pre>';
print_r($NewArray);

我猜它会自动将其转换为数字,尝试运行一个简单的循环将其转换回字符串


我认为你的.csv数据应该被引用来解释为原样(文本、字符串…)。你不能把它们包括进去吗?像这样的regexp/replace应该可以做到这一点(只要文件以空行结尾):regex
([^;\n]*)([;\n])
replace
“$1”$2
。也许PHPExcel可以配置为以文本形式读取所有数据,甚至不带引号,但我不知道。但在数组[0]中,我有9BE200-100-L、BD240-150-44这样的值。但没有固定长度。在这种情况下,它无法插入数据库。我在那个地方得到六个零。编辑我的问题。
[0] => Array
(
    [0] => 86
    [1] => 
    [2] => 892902000086
    [3] => 1
    [4] => 34,27
)
[1] => Array
(
    [0] => 109
    [1] => 
    [2] => 892902000109
    [3] => 1
    [4] => 15,57
)
[2] => Array
(
    [0] => BD159-150-2XL
    [1] => 
    [2] => 892902000116
    [3] => 1
    [4] => 15,57
)
[3] => Array
    (
        [0] => BD240-150-44
        [1] => 
        [2] => 892902000116
        [3] => 1
        [4] => 15,57
    )
[4] => Array
    (
        [0] => BD235-200-35/38
        [1] => 
        [2] => 892902000116
        [3] => 1
        [4] => 15,57
    )
Here in array[0] leading zeros are removed .But I need same values as in csv like 
000086
000109
BD159-150-2XL
BD240-150-44
BD235-200-35/38

How can i achieve this? Threre is no fixed length of article number. It could be 6characters/10 charactes / 3 characters. Any help would be greatly appreciated.
foreach ($NewArray as &$row) {
    $row[0]= sprintf("%06d", $row[0]);
}