phpexcel导入数据时超过26列怎么解决? 30

$PHPExcel=$PHPReader->load($filename);//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推$currentSheet=... $PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=1;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$data[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
}

}
展开
 我来答
啦哈嘿呦c7
推荐于2016-10-24 · TA获得超过4688个赞
知道大有可为答主
回答量:2398
采纳率:70%
帮助的人:460万
展开全部
  生成excel都会使用phpExcel类,介绍在生成excel列名超过26列大于Z时的解决办法,这是phpExcel类中的方法,代码如下:

  复制代码 代码如下:

  public static function stringFromColumnIndex($pColumnIndex = 0)

  {

  // Using a lookup cache adds a slight memory overhead, but boosts speed

  // caching using a static within the method is faster than a class
static,

  // though it's additional memory overhead

  static $_indexCache = array();

  if (!isset($_indexCache[$pColumnIndex])) {

  // Determine column string

  if ($pColumnIndex < 26) {

  $_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);

  } elseif ($pColumnIndex < 702) {

  $_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) . chr(65 +
$pColumnIndex % 26);

  } else {

  $_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) .
chr(65 + ((($pColumnIndex - 26) % 676) / 26)) . chr(65 + $pColumnIndex %
26);

  }

  }

  return $_indexCache[$pColumnIndex];

  }

  将列的数字序号转成字母使用,代码如下:

  复制代码 代码如下:

  PHPExcel_Cell::stringFromColumnIndex($i); // 从o开始

  将列的字母转成数字序号使用,代码如下:

  复制代码 代码如下:

  PHPExcel_Cell::columnIndexFromString('AA');
百度网友8041235
2015-04-22 · TA获得超过227个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:228万
展开全部
for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
echo $currentColumn, '<br>';
}
这个循环会自动以 AA,AB,....形式累加的
追问
我试过了。到Z之后就不会显示的
追答
$currentColumn = 'A';
for ($i = 1; $i <= 52; $i++) {
    echo $currentColumn++, '<br />';
}

自己尝试一下

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式