Php 设置文本格式以适应Excel中的列
我将此文本块放在一个数组中:Php 设置文本格式以适应Excel中的列,php,excel,csv,Php,Excel,Csv,我将此文本块放在一个数组中: "Stefan Olsson" "Kungsvägen" "Skolgatan" xxxx-xx-xx 0735xxxxxx, "Pär Davidsson" "Skolgatan" "Myntvägen" xxxx-xx-xx 0709xxxxxx, 我将此类内容解析为CSV文件,以便以后在Excel中使用。但是,我想将此文本改为适合Excel中的不同列。因此,当我在Execel中打开CSV文件时,我希望名称在一列中,地址在除etcetc之外的列中。我怎样才能做
"Stefan Olsson"
"Kungsvägen"
"Skolgatan"
xxxx-xx-xx
0735xxxxxx,
"Pär Davidsson"
"Skolgatan"
"Myntvägen"
xxxx-xx-xx
0709xxxxxx,
我将此类内容解析为CSV文件,以便以后在Excel中使用。但是,我想将此文本改为适合Excel中的不同列。因此,当我在Execel中打开CSV文件时,我希望名称在一列中,地址在除etcetc之外的列中。我怎样才能做到这一点?我应该使用PHPExcel吗?或者可以用普通的老PHP来实现
这是我的PHP代码
$gatunamn = $_POST['gata'];
$ort = $_POST['omrade'];
$csv_data = array();
$newSpider->fetchPage($gatunamn, $ort, $offset=0);
$obj = json_decode($newSpider->html);
echo "<div id='rightcontent'><table id='one-column-emphasis'>";
echo "<th><input type='checkbox' name='csv_all' id='csv_all'></th><th>Namn</th><th>Adress</th><th>Adress2</th><th>Adress3</th><th>Personnummer</th><th>Telefonnummer</th><th>Telefonnummer2</th>";
$antal_sidor = round($obj->search->wp->totalHits / $obj->search->wp->pageSize);
echo "<td></td>";
foreach($obj->search->wp->features as $fish) //Loopar ut 50st (pageSize)
{
echo "<tr>";
echo "<td><input type='checkbox' value='csv' class='csv'></td>";
echo "<td>" . $fish->name . "</td>";
$csv_data[] .= utf8_decode($fish->name);
foreach($fish->addresses as $ad)
{
echo "<td>" . $ad->label . " " . $ad->postcode . " " . $ad->area . "</td>";
$csv_data[] .= utf8_decode($ad->label . " " . $ad->postcode . " " . $ad->area);
}
if(!empty($fish->dateOfBirth))
{
$convert_date = substr($fish->dateOfBirth, 0, -3); //Gör om datum från timestamp
echo "<td>" . date("Y-m-d", $convert_date) . "</td>";
$convert_datee = date("Y-m-d", $convert_date);
$csv_data[] .= $convert_datee;
}
if(!empty($fish->phoneNumbers))
{
foreach($fish->phoneNumbers as $ph)
{
echo "<td>" . $ph . "</td>";
$csv_data[] .= $ph . ",";
}
}
echo "</tr>";
}
echo "</table>";
$j = 0;
for($i = 1; $i <= $antal_sidor; $i++)
{
echo "<a href='curl2.php?gatunamn=$gatunamn&ort=$ort&offset=$j'>" . $i . "</a> ";
$j += 100;
}
echo "</div>";
echo "<div id='debug'><pre>";
var_dump($csv_data);
echo "</pre></div>";
}
if(isset($_POST['export']))
{
$fp = fopen("eniroo.csv","w");
foreach(explode(",", implode("\n",$csv_data)) as $rad) {
fputcsv($fp, array(implode(',', str_getcsv($rad, "\n"))));
}
echo "<div id='csv_info'>";
echo "<a href='eniro.csv'>Hämta CSV-fil</a>";
echo "</div>";
}
$gatunan=$\u POST['gata'];
$ort=$_POST['omrade'];
$csv_data=array();
$newSpider->fetchPage($gatunan,$ort,$offset=0);
$obj=json_decode($newSpider->html);
回声“;
echo“NamnadressAddress2aDress3PersonNummerTelefonNummerTelefonNummer2”;
$antal_sidor=round($obj->search->wp->totalHits/$obj->search->wp->pageSize);
回声“;
foreach($obj->search->wp->features as$fish)//Loopar ut 50st(页面大小)
{
回声“;
回声“;
回声“$fish->name.”;
$csv_数据[].=utf8_解码($fish->name);
foreach($fish->地址为$ad)
{
回显“$ad->label.”“$ad->postcode.”“$ad->area.”;
$csv_data[].=utf8_解码($ad->label.“$ad->postcode.”。“$ad->area);
}
如果(!空($fish->dateOfBirth))
{
$convert_date=substr($fish->dateof birth,0,-3);//Gör om datum från时间戳
回显“.日期(“Y-m-d”,“转换日期”);
$convert_-datee=日期(“Y-m-d”,“convert_-date”);
$csv_data[]。=$convert_datee;
}
如果(!空($fish->phoneNumbers))
{
foreach($fish->phonenumber作为$ph)
{
回声“$ph.”;
$csv_数据[].=$ph.“,”;
}
}
回声“;
}
回声“;
$j=0;
对于($i=1;$i),这可以在php中完成,但我认为您忘记了所需的输出示例。@kevinabelita:所需的输出示例?输出如上所示。如果您只想编写csv,则使用php的内置fputcsv()函数是完全足够的;只有在需要样式、复杂公式、多个工作表或MS Excels的任何其他特殊功能时,才需要使用PHPExcel,但如果这是一大块文本,则需要将其重新构造为数组;无论您是否要使用PHPExcel或fputcsv()@MarkBaker:我已经有了一个包含文本块的数组。谢谢你的回答。它运行得很好。但是有一个问题。正如你在这里看到的:,前两行是正确的,但第三行是错误的,因为Bryan与Elin出现在同一行。它应该是Bryan的新行。你知道吗?我认为原因是每行一行son可以有两个地址,即5列,一个人只能有1个地址,结果只有4列。下面是我的$dataRow中的一个变量转储:正如你所看到的,Bryan和Elin在同一部分,这是错误的。我如何用空字符串替换第5行?你可能想在分块之前遍历数组,检查e需要插入一个额外的空条目(即一条记录只有4个条目)是的,但我如何进行这种检查?我不知道如何完成这种检查。是的,但我如何进行这种检查?我不知道如何完成这种检查。
// Restructure the original array into rows
$myDataArray = array_chunk($myDataArray, 5);
// Then write to CSV
$fp = fopen('file.csv', 'w');
foreach($myDataArray as $dataRow) {
fputcsv($fh, $dataRow);
}
fclose($fh)