php读取excel列并写入txt文件

<?PHP
//
//参考资料,Excel VBA参考手册,对象,方法和函数名称一样,只是语法要改成符合PHP,但是存储结构化数据指针的方式变成“-〉”,不是VBA中的'.',如在VBA中是 A.B,PHP此处就变成A->B
//要求打开php对COM的支持:
// Excel操作的层次级别
//应用 -〉当前打开的工作簿集合(相当于打开多个文件)-〉具体的某个工作簿(文件)-〉工作表-〉行和列
//A:对于workbooks对象里面的工作簿的个数,其值为Workbooks.Count,Workbooks(1) is the first workbook created, and Workbooks//(Workbooks.Count) is the last one created.
//对于workbook里面的sheet对象数,类似,Worksheets.Count给出了总的工作表的数量
//B:The worksheet index number denotes the position of the worksheet on the workbook’s tab bar. Worksheets(1) is the first (leftmost) worksheet in the workbook, and Worksheets(Worksheets.Count) is the last one. All worksheets are included in the index count, even if they’re hidden.

//总体层次,Application -> workboooks -> workbook -> worksheet -> row,column,cell

$filename = "F:/phone/excel/1.xls";
$sheet1 = 1; //sheet(工作表)的index
$fp = fopen ("F:/phone/excel/number.txt", "a+");
//$sheet2 = "sheet2";
$excel_app = new COM("Excel.application") or Die ("Did not connect");
print "Application name: {$excel_app->Application->value}\n" ;
print "Loaded version: {$excel_app->Application->version}\n<BR>利用PHP读取多个excel文件";

Echo "<br> OK---<br>";
$Workbook = $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");

//$Workbook2 = $excel_app->Workbooks->open("f:/test/ABC.xls") or Die("Did not open f:/test/ABC.xls");
/*上面也可以用 $Workbook2 = $excel_app->Workbooks->add("f:/test/ABC.xls") or Die("Did not added"); 但工作簿名称变为ABC1,不知为啥*/
//$Workbook3 = $excel_app->Workbooks->open("f:/test/xia.xls") or Die("Did not open f:/test/xia.xls");

printf ("文件数量:%d",$excel_app->Workbooks->Count);
echo  "<BR>工作簿名称:$Workbook->Name <BR>";

//echo  "工作簿名称:$Workbook2->Name <BR>";
//echo  "工作簿名称:$Workbook3->Name<BR>";

$Worksheet = $Workbook->Worksheets($sheet1);
printf ("工作表数量:%d",$Workbook->Worksheets->Count);
$Worksheet->activate;
Echo "<br>---------------------------------------------------------------<br>";
echo "工作表名称:$Worksheet->Name <BR>";


/*/以下此段代码的限制:用于寻找excel的某个sheet的有效数据区域(已知没有找到合适的excel函数)。直接用65535*256的循环不行
未考虑应付复杂情况,所处理的必须是规则的矩阵,(总体要求第一行和第一列每个CELL的值均不能为空)无规则矩阵及大规模稀疏矩阵不支持。*/

//寻找非空的行列值下标  Worksheets("Sheet1").Cells(rwIndex, colIndex)
 
/*for ($i = 1;$i<=$Worksheet->Columns->Count; $i++)
{      
     if ($Worksheet->cells(1,$i)=='') break;
 }
 
 $maxcol = $i-1;*/

 $j=0;
for ($i =1; $i<=8000; $i++)
{  
    if ($Worksheet->cells($i,1)!='')
 
 { $shou=$Worksheet->cells($i,1);
  $num="$shou".",";
 
   if($i%50==0)
   {
   echo "<br><br>"."@@@++++++++++++++++++++++++++++++下一批+++++++++++++++++++++++@@@"."<br>";
   }
 
  echo "$num"."<br>";
 
  if($i%50==0)
  {
   $txt ="\n"."@@@+++++++++++++++++++++下一批++++++++++++++++++@@@"."\n";
   fwrite($fp,$txt);
   }
   fwrite($fp, $num);
 }
 
  else{
    $j++;
   continue; //相当于skip, 跳过。
  
   }
}

echo "<br>";
echo "空行 :"."$j";
echo "\n";
printf("<BR>至此显示完毕了所有%d个手机号码",$i-$j);

#To close all instances of excel:关掉所有Excel文件
$Workbook->Close;
                                //Echo "<br>Workbook->Close OK<br>";
unset($Worksheet);
unset($Workbook);

$excel_app->Workbooks->Close();
$excel_app->Quit();
                               //Echo "<br>excel_app quit OK<br>";
unset($excel_app);
                               //Echo "<br>unset excel_appOK<br>";
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值