我有一个名为A
的表,有1000行,如:
id | name
----+------
1 | a
2 | b
3 | c
4 | d
,直到id=1000
现在我想将此表格A
导出为CSV
我能够做到的事情。但我希望数据在2列中,如数据直到id=499
应在第1列打印,剩余数据应在第2列打印。我不会在id
中打印CSV
。
结果应该是CSV
:
a | at500 (I am using 500 for reference that from here it should print in 2nd column)
b | bvf501
c499| vf1000
这是我现在的代码,它将所有行打印成单列:
$filename = "excelfilename";
$sep = "\t";
$sql = "Select `name` from `A`";
$result = mysqli_query($con,$sql) or die("Couldn't execute query:<br>" .
mysqli_error($con). "<br>" . mysql_errno());
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
while($row = mysqli_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysqli_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
}
答案 0 :(得分:0)
首先,您可以从数据库中读取数据并将结果保存在数组中。
请注意,$ full_data_array是您的1000&#39;
然后你可以将数组拆分为两个(因为你需要500个),像这样,
$chunk_array = array_chunk($full_data_array, 2);
您将获得多维数字索引数组。
合并这两个数组,
$combined_array = array_map(function ($a1, $a2) { return $a1 . ' , ' . $a2; } , $chunk_array[0], $chunk_array[1]);
然后遍历这个$ combined_array来创建这样的CSV,
$file = fopen("your_csv_name.csv","w");
foreach ($combined_array as $line)
{
fputcsv($file,explode(',',$line));
}
fclose($file);
答案 1 :(得分:0)
$filename = "excelfilename";
$sep = "\t";
$sql = "Select `name` from `A`";
$result = mysqli_query($con,$sql) or die("Couldn't execute query:<br>" .
mysqli_error($con). "<br>" . mysql_errno());
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
$tempData="";
while($row = mysqli_fetch_row($result))
{
$tempData=$row;
}
$size=count($tempData)/2;
for($i=0;$i<$size;$i++){
$schema_insert1 = "";
for($j=0; $j<count($tempData[$i]);$j++)
{
if(!isset($tempData[$i][$j]))
$schema_insert1 .= "NULL".$sep;
elseif ($tempData[$i][$j] != "")
$schema_insert1 .= $tempData[$i][$j].$sep;
else
$schema_insert1 .= "".$sep;
}
$schema_insert2 = "";
for($j=0; $j<count($tempData[$i+$size]);$j++)
{
if(!isset($tempData[$i+$size][$j]))
$schema_insert2 .= "NULL".$sep;
elseif ($tempData[$i+$size][$j] != "")
$schema_insert2 .= $tempData[$i+$size][$j].$sep;
else
$schema_insert2 .= "".$sep;
}
$schema_insert1 = str_replace($sep."$", "", $schema_insert1);
$schema_insert2 = str_replace($sep."$", "", $schema_insert2);
// Now concatenation them both strings as you want
// $tempString .= $schema_insert1.$sep.$schema_insert2;
}
根据您的要求替换或更改// $tempString .= $schema_insert1.$sep.$schema_insert2;
此行。
希望这对你有用。