分割excel文件

1.分割csv文件

<?php
$jobDir = ".";
$files = [];
        $lineCount = 0;
        $filePath = $jobDir . '/all.csv';
		//var_dump($filePath);die;
        $file = new \SplFileObject($filePath);
		$file->seek($file->getSize());
		$totalcsvline = $file->key();	
		$file = null;
		$file = new \SplFileObject($filePath);
        $chunk = 0;
        if ($totalcsvline <= 2500) {
            $chunk = "last";
        }
        $chunkFilename = $jobDir . '/chunk_' . $chunk . '.csv';
        $files[] = $chunkFilename;
        $chunkFile = new \SplFileObject($chunkFilename, 'w+');
        $j =1;
        $lastpage = ceil($totalcsvline/2500);
		echo "最后一页".$lastpage."\n";
        while (!$file->eof()) {
            $lineCount++;
			//echo $lineCount."*";
            if ($lineCount >= 2500) {
                $j++;
				echo "\n".$j."chunk_' . $chunk . '.csv'";
                if ($j == $lastpage){
                    $chunk = "last";
                }
                $chunkFile = null;
                $lineCount = 0;
                $chunk++;
                $chunkFilename = $jobDir . '/chunk_' . $chunk . '.csv';
                $files[] = $chunkFilename;
                $chunkFile = new \SplFileObject($chunkFilename, 'w+');
            }

            $line = $file->fgets();

            $chunkFile->fwrite($line);
        }

        //$lastFile = array_pop($files);
        //$this->filesystem->rename($lastFile, $jobDir . '/chunk_last.csv', true);
        //$files[] = $jobDir . '/chunk_last.csv';

        return $files;

2.合并csv文件

<?php
$fileA = "./chunk_0.csv";
$fileB = "./chunk_1.csv";
$destinationFile = "./new.csv";
copy($fileA, $destinationFile);
$contentFile = fopen($fileB, 'r');
file_put_contents($destinationFile, $contentFile, FILE_APPEND); // Stream contents into file
//unlink($fileA);  //删除文件
//unlink($fileB);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值