![](/img/trans.png)
[英]PHPExcel - read 4 CSV files into a single workbook with 4 spreedsheets
[英]Issue on .csv files on PHPExcel
我在讀取.csv文件時遇到PHPExcel問題。
我想從.csv文件中獲取值,但問題是來自特定行的數據被視為單個單元格。
繼承我的代碼:
include 'Classes/PHPExcel/IOFactory.php';
$inputFileType = 'CSV';
$inputFileName = $_FILES['file']['tmp_name'];
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$table = "<table border=1><tr><td>first</td><td>middle</td><td>last</td><td>email</td>";
for ($x = 2; $x <= count($sheetData); $x++){
foreach ($sheetData[$x] as $data){
$first = $sheetData[$x]['A'];
$middle = $sheetData[$x]['B'];
$last = $sheetData[$x]['C'];
$email = $sheetData[$x]['D'];
}
$table .= "<tr><td>" . $first ."</td><td>" . $middle . "</td><td>" . $last . "</td><td>" . $email . "</td></tr>";
}
$table .= "</table>";
echo $table;
它正在處理.xls和.xlsx文件,我得到了我想要的所需輸出。
這很好用:
$objReader->setDelimiter("\t");
但是,當你不是100%確定它的標簽或逗號是否分開時,似乎無法添加兩個例如$objReader->setDelimiter("\\t",);
這是必需的。 當您打開Excel並轉到導入CSV時,實際的屏幕上的步驟允許您指定多個分隔符,這將是很酷的。
這是你正在使用PHP Office的東西嗎?
另外,這里有兩個鏈接,可幫助您使用PHP查找文件是否以逗號,制表符或管道分隔 - 安靜一個聰明的解決方案:
這對我有用:
$objReader = new PHPExcel_Reader_CSV();
$objReader->setDelimiter(';');
$objReader->setEnclosure('');
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0);
$objPHPExcel = $objReader->load($myFile);
更多信息https://docs.typo3.org/typo3cms/extensions/phpexcel_library/1.7.4/manual.html#_Toc237519888
那么文件中的分隔符是什么? 它是逗號,分號,標簽還是別的什么?
PHPExcel還沒有自動檢測模式,因此除非您指定要使用的分隔符和附件,否則它將默認為逗號分隔符和雙引號(“)附件。如果您的文件使用制表符或半冒號,或者將某個其他字符作為分隔符,然后您需要手動告訴CSV讀取器使用哪個字符,否則它會將該行視為單個單元格。
閱讀器的用戶文檔的一部分專門用於解釋CSV文件的這些選項(見第4.6節)。
請注意,我的目標邏輯是從#phpnw13黑客馬拉松中的文件本身“最佳猜測”分隔符和機箱值,但在此之前,如果不是默認值,則需要手動指定
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.