我是PHP的新手,我遇到了这个问题。
$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
if (((in_array($_FILES['uploadedfile']['type'],$mimes)))
&& ($_FILES["uploadedfile"]["size"] > 0))
{
$filename = $_SESSION['username'].$_FILES["uploadedfile"]["name"];
move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],"./uploads/".$filename);
echo "Stored in: " . "./uploads/" .$filename;
echo "<br />\n";
echo 'Daylight hours will be calculated for this latitude : '.$_POST['latCSV'];
echo "<br>";
//print out uploaded file.csv
echo "<table BORDER=1>\n\n";
echo " <tr><th>AvgCrown</th><th>MinCrown</th><th>MaxCrown</th><th>dateLogged</th><th>DaylightHours</th></tr>";
echo "<tbody id='tblBdyLoggedData'>";
$f = fopen("./uploads/" .$filename, "r");
$i=0; //just a counter
while (($line = fgetcsv($f)) !== false) {
echo "<tr>";
foreach ($line as $cell) {
// Save the value before you output
$lastColValue = htmlspecialchars($cell);
//unset($lastColValue[3]);
echo "<td>" . $lastColValue . "</td>";
}
//checking if date is valid
checkDateString($lastColValue);
// If you want to store all log dates in an array:
$logDates[] = $lastColValue;
$firstlogDate = $logDates[$i];
echo "<td>" . checkDateString($lastColValue) . "</td>";
//call function using firstlogDate for every row
echo "<td>" . calcDaylight($firstlogDate,$_POST["latCSV"]) . " </td>";
echo "</tr>\n";
$i = $i+1;
}
fclose($f);
echo "</tbody></table></body></html>";
}
我想在文件上传时只打印CSV文件的前3列,因为另外两个将使用各自的功能计算。日期记录将从csv中获取并正确重新格式化,日照时间也是从记录日期计算的。
答案 0 :(得分:2)
首先,使用PHP文件系统库解析$ file_contents:
$ foo = split(',',$ file_contents);
参考:http://php.net/manual/en/book.filesystem.php
现在您可以访问前三列:
echo foo[0] . '/' . foo[1] . '/' . foo[2];
答案 1 :(得分:1)
这段代码可以帮助你
?php
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
$count=0;
echo "<tr>";
foreach ($line as $cell )
{
if($count<3)
{
echo "<td>" . htmlspecialchars($cell) . "</td>";
$count++;
}
}
echo "<tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
答案 2 :(得分:1)
替换它:
foreach ($line as $cell) {
// Save the value before you output
$lastColValue = htmlspecialchars($cell);
//unset($lastColValue[3]);
echo "<td>" . $lastColValue . "</td>";
}
用这个:
$lineValues = array_values($line);
if (count($line) < 3) {
echo "<td>This line is unusable</td><td></td><td></td>";
}
for ($colNum = 0; $colNum < 3; $colNum++) {
echo "<td>" . htmlspecialchars($lineValues[$colNum]) . "</td>";
}