php 實現Excel表格導入導出

導入:

1.將Excel表格轉換成csv格式的,比較方便。

2.用getCsv方法將數據導出來,遍歷添加

代碼僅供參考,getCsv方法可以直接複用

$tmp_file = $_FILES ['file'] ['tmp_name'];

$music_singer     = $this->getCsv($tmp_file);
$new_music_singer = array_values(array_unique($music_singer));

$voiceSingerDtObj  = new VoiceSinger_Dt_Mod();

$failNum   = 0;
$succNum   = 0;
$total     = count($musicArr);
if($new_music_singer)
{
    foreach($new_music_singer as $name)
    {
        $row   = $voiceSingerDtObj->getVoiceSingerByName($name);
        if(empty($row))
        {
            $res   = $voiceSingerDtObj->addVoiceSinger($name, 0);

            if(! $res)
            {
                $failNum ++;
                continue;

            }
            else
            {
                $succNum ++;
            }

        }

    }
}


utilLib::msgSuccRedirect('導入完成,共'.$total.'條,成功'.$succNum.'條,失敗'.$failNum.'條');

 

public static function getCsv($csvFileName, $line = 0, $offset = 0)
{


    $handle = fopen($csvFileName, 'r');
    if (!$handle)
    {
        return '文件打開失敗';
    }

    $i   = 0;
    $arr = array();
    while ($data = fgetcsv($handle))
    {
        if ($i < $offset && $offset)
        {
            $i++;
            continue;
        }

        //大於讀取行數則退出
        if ($i > $line && $line)
        {
            break;
        }
        $i++;
        foreach ($data as $key => &$value)
        {
            $encode = mb_detect_encoding($value, array('ASCII', 'UTF-8', "GB2312", "GBK", 'BIG5'));


            if ($encode != 'UTF-8')
            {
                $value = @iconv($encode, "utf-8//IGNORE", $value);//轉化編碼
            }


        }
        $arr[] = $data;

    }
    return $arr;
}

 

導出

$csv_header = ['時間', '  充值金額(元)', '發幣數'];
$dataArr[]  = $csv_header;

for ($i = $sbtm; $i <= $setm; $i = $i + 86400)
{
    $y           = $i + 86400;
    $data        = $payOrderObj->getSumMoneyByTm($i, $y, 0, $s_ptype);
    $rmb         = isset($data['rmb']) ? ($data['rmb'] + 0) / 100 : 0;
    $coin        = isset($data['coin']) ? $data['coin'] : 0;
    $row['time'] = date("Y-m-d", $i);
    $row['rmb']  = $rmb;
    $row['coin'] = $coin;
    $dataArr[]   = $row;

    $totalRmb  += $rmb;
    $totalCoin += $coin;
}

$csv_tail  = ['總計', $totalRmb, $totalCoin];
$dataArr[] = $csv_tail;
$string    = "";
foreach ($dataArr as $key => $value)
{
    $string .= implode(",", $value) . "\n";
}

header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=充值對賬單[{$billdate}].csv");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo chr(0xEF) . chr(0xBB) . chr(0xBF) . $string;
exit();

示例:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章