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. ThinkPHP框架下,jq实现在div中添加标签并且div的大小会随之变化

    php初学者,有什么不对的还请指正. 首先是在html页面中用jq实现添加标签:divAchivePersonnal是select所在的div的外层div,divselectAchivePersonn ...

  2. 如何用DOS 链接mysql

    1.Ctrl+R 打开DOS窗口 2.键入 cd\ 回车进入C盘根目录 3.进入mysql bin目录下 操作mysql命令 4.输入连接数据库命令 mysql -hlocalhost -uroot ...

  3. How do I solve the error: An error was encountered while running (Domain = LaunchServicesError, Code = 0) ?

    How do I solve the error: An error was encountered while running (Domain = LaunchServicesError, Code ...

  4. c# 無彈窗调用打印机

    using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...

  5. WebApp 中用 hashchange 做路由解析

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Node.js教程

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的服务器端平台.Node.js是由瑞恩·达尔在2009年开发的,它的最新版本是v0.10.36. N ...

  7. Delphi 的运算符列表,运算符及优先级表格 good

    Delphi 的运算符列表 分类 运算符 操作 操作数 结果类型 范例 算术运算符 + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 Result - 1 * 乘 整数,实数 ...

  8. AlgorithmsI PA2: Randomized Queues and Deques Subset

    本题的bonus是 因此方法是queue的size 达到了K, 就停止增加元素,保证queue.size() 最大时只有k. Java code: import edu.princeton.cs.al ...

  9. UVA 796 Critical Links(无向图求桥)

    题目大意:给你一个网络要求这里面的桥. 输入数据: n 个点 点的编号  (与这个点相连的点的个数m)  依次是m个点的   输入到文件结束. 桥输出的时候需要排序   知识汇总: 桥:   无向连通 ...

  10. Invert Binary Tree——LeetCode

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...