<?php 
function xlsBOF() { 
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);  
    return; 
  } function xlsEOF() { 
    echo pack("ss", 0x0A, 0x00); 
    return; 
  } function xlsWriteNumber($Row, $Col, $Value) { 
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
    echo pack("d", $Value); 
    return; 
  } function xlsWriteLabel($Row, $Col, $Value ) { 
    $L = strlen($Value); 
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
    echo $Value; 
    return; 
  } 
  
 if($_POST['daobaobiao'] == true){
     $where = $_POST['drawingcode2'];  $str = implode(",",$_POST['chek']);    
include_once("pdmdblogon.php");
$sql = "select ".$str." from XTDETAMSALL_DETAIL_2 where UPCODE = '$where'";
$stmt = ociparse($conn,$sql);
if(!$stmt){echo "ERROR - Could not parse SQL statement."; exit;}
$result = ociexecute($stmt); header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=$where.xls "); 
header("Content-Transfer-Encoding: binary "); xlsBOF(); 
foreach($_POST['chek'] as $key => $value){
++$i;
xlsWriteLabel(1,$i,$value);
}
$xlsRow = 2;
while(ocifetchinto($stmt,$row,OCI_ASSOC)) {
$ii=1;
        $keys = (array_values($row));
foreach ($keys as $v){
xlsWriteLabel($xlsRow,$ii,$v);
$ii+=1;
}

$xlsRow+=1;
}
   xlsEOF();
   exit();
 }
?>这个图所对应生成的excel为《总共四条记录,可全部导出》
CINVCODE YONGYOU CHANGERATE INVCOST SJYL DXCB UPCODE UPNAME
1020800260 02060042 1 4 0 0 TSK202B-11-11-100 渡板组成
1021000271 02400103 1 4.7 0 0 TSK202B-11-11-100 渡板组成
1021000281 02050504 1 4.7 0 0 TSK202B-11-11-100 渡板组成
1000000011 06303001 1 9 7825 752 TSK202B-11-11-100 渡板组成
而这个图则出现了如下结果:《共一千多条记录,但是只能导出下面几条结果来》
CINVCODE YONGYOU CHANGERATE INVCOST SJYL DXCB UPCODE UPNAME
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成
    0 0 0 0 TSK254-10-00-000 车体组成请问在这个导出excel程序中,为何会出现这样的结果,不能全部导出来呢?

解决方案 »

  1.   

    这个程序只在GB下能用
    你可以echo看看数据,最出的对不对,然后再看看写入的对不对
      

  2.   

    楼主先将数据echo出来,看看对不对
      

  3.   

    先确保查询结果是正确的其实输出为 EXCEL 并不需要那么麻烦
    只需要用HTML的表格标记书写输出结果就可以了
      

  4.   

    版主是说输出一个html的table字串,输出时同时提示IE用EXCEL打开EXCEL打开html会将表格识别出来
      

  5.   

            header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=".$lotid.".csv");

    echo "*************************************************************************\n";
    大概类似如此的吧
      

  6.   

    我终于发现为啥不能全部选择出来的原因就是我没有从数据库中把相关节点信息茶出来,需要循环查询数据库才可以!我现在出现了一个问题,我想问一下,我有一个字段:里面的内容为“09-10”“0-53-09-10”等
    他们是字符串的形式,但是在excel中“09-10”为何显示了年份,9月10,而不是09-10的显示形式;53-09-10”这个则可以正常显示,但是我发现在excel的左上角上有一个小三角,发现他们是日期格式的,请问这种情况我该如何去修改?
    是在程序中进行修改还是在excel中进行格式修改?才可以按照我想要的格式进行显示?
      

  7.   

    <?php include "include/pdmdblogon.php";?>
    <html>
    <head>
    <title>将Web页面中的数据导出到Excel</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link href="css/style.css" rel="stylesheet">
    <style type="text/css">
    <!--
    body {
    margin-top: 0px;
    }
    -->
    </style></head>
    <body>
    <table  align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td>
      <table id="tablemake"  border="0" cellpadding="0" cellspacing="1" bordercolorlight="#FFFFFF" bordercolordark="#CCCCCC" bgcolor="#000000">
          <tr align="center" bordercolor="#CCCCCC" bgcolor="#EEEEEE">
            <td width = 50 height="30">序号</td>
            <td width = 100>领料单位</td>
            <td width = 150>新物料码</td>
            <td width = 150>用友码</td>
            <td width = 150>属装图号</td>
            <td width = 250>图号</td>
            <td width = 250>图名</td>
            <td width = 50>件号</td>
            <td width = 250>材料</td>
            <td width = 150>定额</td>
            <td width = 220>下料尺寸</td>
            <td width = 50>利用率</td>
            <td width = 100>数量</td>
            <td width = 50>计量单位</td>
            <td width = 150>工艺分工</td>
            <td width = 150>自制/外购</td>
           </tr>
        <?php

    $i = 0; 

    while($detail[11][$i])
    {
      //为奇偶行赋不同的颜色
    if($i%2 == 1)
    {
    ?><tr BGCOLOR="#EBEBEB"><?php
    }
    else
    {
    ?><tr BGCOLOR="#DBDBDB"><?php
    }

       echo "<td align=center NOWRAP>";//序号
    echo $i+1;//序号是自动加1
    echo "</td>";

    echo "<td align=center NOWRAP>";//领料单位
    echo $detail[30][$i];
    echo "</td>";

            echo "<td align=center NOWRAP>";//新物料码
    echo $detail[13][$i];
    echo "</td>";

    echo "<td NOWRAP>";//用友码
    echo $detail[12][$i];
    echo "</td>";

    echo "<td>";//属装图号
    echo $detail[3][$i];
    echo "</td>";

    echo "<td NOWRAP>";//图号
    echo $detail[1][$i];
    echo "</td>";

    echo "<td NOWRAP>";//图名
    echo $detail[2][$i];
    echo "</td>";

    echo "<td NOWRAP>";//件号
    echo $detail[4][$i];
    echo "</td>";

    echo "<td NOWRAP>";//材料
    echo $detail[5][$i];
    echo "</td>";

    echo "<td NOWRAP>";//定额
    echo $detail[29][$i];
    echo "</td>";

    echo "<td NOWRAP>";//下料尺寸
    echo $detail[28][$i];
    echo "</td>";

    echo "<td NOWRAP>";//利用率
    echo $detail[22][$i];
    echo "</td>";


    echo "<td NOWRAP>";//数量
    echo $detail[8][$i];
    echo "</td>";

    echo "<td NOWRAP>";//计量单位
    echo $detail[24][$i];
    echo "</td>";

    echo "<td NOWRAP>";//工艺分工
    echo $detail[10][$i];
    echo "</td>";

    echo "<td NOWRAP>";//自制外购
    echo $detail[42][$i];
    echo "</td>";

       echo "</tr>";//行

    $i++;
    }
    ?>
        </table>      
          <table width="82%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td height="25" align="right"><a href="#" onClick="outExcel();">导出到Excel</a></td>
            </tr>
        </table>
        </td>
      </tr>
      
    </table>
    </body>
    </html>
    <script language="javascript">
    function outExcel(){
    var table=document.all.tablemake;
    row=table.rows.length;
    column=table.rows(1).cells.length;
    var excelapp=new ActiveXObject("Excel.Application");
    excelapp.visible=true;
    objBook=excelapp.Workbooks.Add(); //添加新的工作簿
    var objSheet = objBook.ActiveSheet;
    for(i=1;i<row+1;i++){
    for(j=0;j<column;j++){
      objSheet.Cells(i+1,j+1).value=table.rows(i-1).cells(j).innerHTML.replace("&nbsp;","将Web页面中的数据导出到Excel");
    }
    }
    excelapp.UserControl = true;
    }
    </script>
    在生成的excel中为什么当为“09”的时候得结果会是“9”(领料单位字段),而应该是“09-10”的结果,却显示出来的结果为“9月10日”(工艺分工字段),而为“02-09-10”的显示结果为“2010-2-9”(工艺分工字段),并且这个字段似乎都是按照日期进行显示的,请问我该如何纠正这个问题?按照正确形式显示?
      

  8.   

    还有这个问题:在有些字段“01000203”这个应该是一个字符串,但是它的开头为0,所以在excel中显示出来的结果就丢掉了这个0。
      

  9.   

    少了Cells.NumberFormat.Local = "@"