require_once 'PHPExcel.php';
$PHPReader = new PHPExcel_Reader_Excel2007();
$filePath = 'wjyl.xlsx';
if(!$PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();//讀取舊版本
}
$PHPExcel = $PHPReader->load($filePath);//讀取Excel文件
$sheetCount = $PHPExcel->getSheetCount();//獲取工作表的數目
for($s = 0; $s < $sheetCount; $s++){
echo '<b>這是表'.$s."</b><br />";
$currentSheet = $PHPExcel->getSheet($s); //讀取excel工作表
$allColumn = $currentSheet->getHighestColumn(); //取得最大的列号
$allRow = $currentSheet->getHighestRow();//取得一共有多少行
for($currentRow = 2; $currentRow < $allRow; $currentRow++){
for($currentColumn= 'A';$currentColumn < $allColumn; $currentColumn++){
$val = $currentSheet->getCell($currentColumn.$currentRow)->getValue();
echo $val."&nbsp;&nbsp;&nbsp;";
}
echo "<br />";
}
}
echo 'Well Done!!!';
exit;
/**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/
//echo iconv('utf-8','gb2312', $val);

當excel表的總列數超過了26的時候,也就是超過了Z的時候,再繼續增加就上升為AA,AB,AC......AZ格式,在這種情況下,上面代碼在列循環只會循環第一個A。

了解字母比較:

字母的比較,實際上是字母在ASCII表中所對應的10進制數字大小的比較,例如A 的 ASCII表中十進制對應數字為65,Z的為90;

echo ord('A');//
echo ord('Z');//

比較規則:

A與AB比較,首先,A與AB中的A比較,由於相等,則跳過A,繼續與B比較,得出

echo 'A' < 'AB' ? 1 : 0;//

A與AA比較,先進行字母逐個比較,當每個都相等的情況下,最後進行字符串的長度對比,得出

echo 'A' < 'AA' ? 1 : 0;//

A與BA比較,首先A與B比較,A小於B,得出結果

echo 'A' < 'BA' ? 1 : 0;//

得出結果:
例如上面最後一列為AP,A首先會與allRow中的第一個字母進行比較,相同字母跳過,再與第二個字母比較,A<P,進入循環,執行完第一次代碼之後,列數增加,此時為B與AP比較,由於B>A,所以第一個字母判斷就不成立,退出循環。

解決辦法:

$ColumnArr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP');
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
for($c_Column= 0;$c_Column < count($ColumnArr); $c_Column++){
$val = $currentSheet->getCell($ColumnArr[$c_Column].$currentRow)->getValue();
echo $val."&nbsp;&nbsp;&nbsp;";
}
echo "<br />";
}

解決辦法的原理就是能夠確保列的循環能夠順利的進行,上面固定列出來數組只是方便理解,具體操作可以對$allCloumn進行處理動態獲取列的相關數據。

PHPExcel讀取excel數據的更多相关文章

  1. C#、VSTO讀取Excel類

    之前寫的類存在Excel進程不能結束的Bug,重寫ExcelReader類,類實例清理時Excel進程自動結束. class ExcelReader { // Excel Object public ...

  2. POI 讀取EXCEL

    /*** 獲取單元格數值* * @param cell* @return*/private String getCellValue(Cell cell) {String cellValue = &qu ...

  3. 一次 C# 查詢數據庫 算法優化的案例

    最近有次在修改某段程式時,發現一段程式算法看起來簡單. 但背後因為多次查詢數據庫,導致效能問題. 這段程式主要是利用 EPPLUS 讀取 Excel 資料,檢查資料是否已存在數據庫中,若有就將已存在的 ...

  4. MVC+Ninject+三层架构+代码生成 -- 总结(四、數據層)

    1.數據層使用了SqlSugar 庫類 . 數據層使用了SqlSugar 庫類 ,有興趣的 可以學習  http://www.codeisbug.com/Doc/8/1133,個人覺得比EF 簡單,容 ...

  5. 設定 gpio 為 讀取用途,需注意的參數

    Schematic 解說 上面的 線路圖, R1 R2 只能有一個被接上, R3 R4 只能有一個被接上, 是使用 gpio 讀取 電壓 判斷為0 或是 1 這時的 gpio 設定,其中一個參數需設為 ...

  6. C#在Excel的簡單操作--適用:與DB數據的簡單交互

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  7. 使用DataSet與DataAdapter對數據庫進行操作

    1.定義連接字符串 var source = "server=(local); integrated security=SSPI; database=test"; var conn ...

  8. 在Android中afinal框架下實現sqlite數據庫版本升級的辦法

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫.   pub ...

  9. 【WIN10】程序內文件讀取與保存

    DEMO下載:http://yunpan.cn/cFHIZNmAy4ZtH  访问密码 cf79 1.讀取與保存文件 Assets一般被認為是保存用戶文件數據的地方.同時,微軟還支持用戶自己創建文件夾 ...

随机推荐

  1. web版扫雷小游戏(一)

    作为一名程序猿,平时的爱好也不多,说起游戏,我不太喜欢大型的网游,因为太耗时间,偶尔玩玩经典的单机小游戏,比如windows下自带的游戏扫雷(秀一下,高级下最高纪录110s). 现阶段正在致力于web ...

  2. delegate 中的BeginInvoke和EndInvoke方法

    开发语言:C#3.0 IDE:Visual Studio 2008 一.C#线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能 ...

  3. OC之JSON数据解析

    JSON介绍: 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带 ...

  4. 【转】javascript变量作用域、匿名函数及闭包

    下面这段话为摘抄,看到网上大多数人使用的是变量在使用的时候声明而不是在顶端声明,也可能考虑到js查找变量影响性能的问题,哪里用就在哪里声明,也很好. 在Javascript中,我们在写函数的时候往往需 ...

  5. OBJC运行时方法替换(Method swizzling)

    在上周associated objects一文中,我们开始探索Objective-C运行时的一些黑魔法.本周我们继续前行,来讨论可能是最受争议的运行时技术:method swizzling.   Me ...

  6. 批处理WMIC查看补丁情况

    最近补丁比较多,需要看系统打了些啥,哪些没打的BAT: wmic qfe GET hotfixid > a.txt&(for %i in (KB3076321 KB3072604 KB3 ...

  7. 【Linux】常用命令-统计代码行数

    公司人员流动大,经常有新的维护任务,交接时喜欢看看新来的模块的代码量,那么问题来了, 如何统计代码行数? 1,最先想到的肯定是 wc. wc -l *.h 将查看[当前目录]下头文件的代码行数,输出结 ...

  8. mapreduce (五) MapReduce实现倒排索引 修改版 combiner是把同一个机器上的多个map的结果先聚合一次

    (总感觉上一篇的实现有问题)http://www.cnblogs.com/i80386/p/3444726.html combiner是把同一个机器上的多个map的结果先聚合一次现重新实现一个: 思路 ...

  9. pycharm console 控制台乱码的解决

  10. X-Plosives

    uvaLive 3644:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pa ...