php Spreadsheet_Excel_Reader读取excel文件

 更新时间:2016年11月25日 16:38  点击:1620

本文章主要是讲利用spreadsheet_excel_reader读取 excel文件,在你网站数据量超大的时候或有很多会员数据时这个是有必要把当日数据导入到excel备份的,为此我们提供一款读取excel文件实例。
下网站下载一个spreadsheet_excel_reader类。
*/

 代码如下 复制代码

$reader=new spreadsheet_excel_reader();
$reader->setutfencoder('iconv');
$reader->setoutputencoding('utf-8'); //可以设置的文档编码
$reader->read($filename);

//如果以以表格形式输出我们就利用遍历

foreach ($reader->boundsheets as $k=>$sheet)
 {
    echo "n$k: $sheet";
 }

//表中的数据存储在表变量.每一个表是一个二维数组。以下是如何打印所有数据

foreach($reader->sheets as $k=>$data)
 {
    echo "nn ".$reader->boundsheets[$k]."nn";

    foreach($data['cells'] as $row)
    {
        foreach($row as $cell)
        {
            echo "$cellt";
        }
        echo "n";
    }
 }

 

 

如果要显示mysql一个指定数据库的表名的话方法很简单,mysql提供了一个show tables命令,它返回的是一个数据,下面来看我做的详细实例,经过测试完全可用
*/

 代码如下 复制代码

$cn = mysql_connect('localhost','root','root');
mysql_select_db('test',$cn);
print_r(get_tables());

/*输出结果

array
(
    [0] => abc
    [1] => cn_user
    [2] => test1
)
*/

function get_tables() //获取所有表表名
{
 $tables=array();
 $r=fetch_all("show tables");
 foreach($r as $v)
 {
  foreach($v as $v_)
  {
   $tables[]=$v_;
  }
 }
 return $tables;
}

function fetch_all($sql)
{
 $rs=mysql_query($sql);
 $result=array();
 while($rows=mysql_fetch_array($rs,mysql_assoc))
 {
  $result[]=$rows;
 }
 
 return $result;
 
}


//本站原创教程转载注明来源于http://www.111cn.net保留连接地址,否则必究! 
 ?>

本文介绍了php spreadsheet_excel_writer与如何生成excel文件。
第一步,安装spreadsheet_excel_writer 由于这包使用ole包,您可能需要安装它

执行以下命令来执行更新: 更新pear.php.net ole - 0.5 spreadsheet_excel_writer - 0.9.1

看一个实例,myfile.xls是文件名(包括路径),工作簿包含一个具有学生名单表

<?php
require_once 'spreadsheet/excel/writer.php';

// creating workbook
$workbook = new spreadsheet_excel_writer('myfile.xls');

// adding worksheet
$worksheet =& $workbook->addworksheet('students');

// data input
$worksheet->write(0, 0, 'name');
$worksheet->write(0, 1, 'grade');
$worksheet->write(1, 0, 'ivancho');
$worksheet->write(1, 1, 7);
$worksheet->write(2, 0, 'mariika');
$worksheet->write(2, 1, 7);
$worksheet->write(3, 0, 'stoyancho');
$worksheet->write(3, 1, 8);

// saving file
$workbook->close();
?>

下面来看一款把数据导出给用户保存吧。

<?php
require_once 'spreadsheet/excel/writer.php';

// creating workbook
$workbook = new spreadsheet_excel_writer();

// sending headers to browser
$workbook->send('students.xls');

// adding worksheet
$worksheet =& $workbook->addworksheet('students');

// data input
$worksheet->write(0, 0, 'name');
$worksheet->write(0, 1, 'grade');
$worksheet->write(1, 0, 'ivancho');
$worksheet->write(1, 1, 7);
$worksheet->write(2, 0, 'mariika');
$worksheet->write(2, 1, 7);
$worksheet->write(3, 0, 'stoyancho');
$worksheet->write(3, 1, 8);

// sending the file
$workbook->close();

本文章提供一款php 连接 access数据库与修改删除增加数据实例哦,首页我们来告诉你利用php 连接 access数据库然后再增加,修改,编辑,显示删除以及数据的分页效果源码。
 代码如下 复制代码

$conn = new com("adodb.connection");
$conn->open("driver={microsoft access driver (*.mdb)}; dbq=".db_path.";uid=;pwd=;");

$rs=new com("adodb.recordset");
$rs->open("select * from [article] order by [articleid]",$conn,1,3);
$rs->pagesize=5;
$page=trim($_get['page']);
if($page=="" || is_numeric(intval($page))<=0){$page=1;}else if(intval($page)>$rs->pagecount){$page=$rs->pagecount;}
$page=intval($page);
if(!$rs->eof||$rs->bof){
 $rs->absolutepage=$page; $mypagesize=$rs->pagesize; $i=$rs->recordcount()-($page-1)*$rs->pagesize; 
 while(!$rs->eof && $mypagesize>0 && $i>=$rs->recordcount()-1-$rs->pagesize*$page){
  $articleid = $rs->fields(0)->value;
  $articletitle = $rs->fields(1)->value; ?>
  <li><a href="detail.php?id=<? echo $articleid; ?>"><? echo $articletitle; ?></a><span><? echo $articlei; ?></span></li>
  <? $rs->movenext; $mypagesize--; $i--;  } } ?>
    </ul>
   </div>
  </div>
  <div id="page">
   <a href="index.php?page=1">头页</a>&nbsp;<a href="index.php?page=<? if($page>1){echo $page-1;}else{echo 1;}?>">上页</a>&nbsp;<a href="index.php?page=<? if($page<$rs->pagecount){echo $page+1;}else{echo $rs->pagecount;}?>">下页</a>&nbsp;<a href="index.php?page=<? echo $rs->pagecount;?>">尾页</a>&nbsp;&nbsp;共<? echo $rs->recordcount(); ?>篇文章,分<? echo $rs->pagecount;?>页显示,现在是第<? echo $page;?>页
  </div>
 <!--


源码下载

http://down.111cn.net/down/code/php/cmswenzhang/2010/1028/21478.html

本文章收集了四款mysql 分页存储过程实例代码,有高效的分页存储过程以及入门级的和通用的存储过程分页代码,如果你正在学mysql分页存储过程就进来看看吧。

mysql测试版本:5.0.41-community-nt
/*****************************************************
mysql分页存储过程
吴剑 2009-07-02
*****************************************************/
drop procedure if exists pr_pager;
create procedure pr_pager(

    in     p_table_name        varchar(1024),        /*表名*/
    in     p_fields            varchar(1024),        /*查询字段*/
    in     p_page_size            int,                /*每页记录数*/
    in     p_page_now            int,                /*当前页*/
    in     p_order_string        varchar(128),        /*排序条件(包含order关键字,可为空)*/
    in     p_where_string        varchar(1024),        /*where条件(包含where关键字,可为空)*/
     out     p_out_rows            int                    /*输出记录总数*/
   
)
    not deterministic
     sql security definer
     comment '分页存储过程'
   
begin

    /*定义变量*/
    declare m_begin_row int default 0;
    declare m_limit_string char(64);

    /*构造语句*/   
    set m_begin_row = (p_page_now - 1) * p_page_size;
    set m_limit_string = concat(' limit ', m_begin_row, ', ', p_page_size);
   
    set @count_string = concat('select count(*) into @rows_total from ', p_table_name, ' ', p_where_string);
    set @main_string = concat('select ', p_fields, ' from ', p_table_name, ' ', p_where_string, ' ', p_order_string, m_limit_string);

    /*预处理*/
    prepare count_stmt from @count_string;
    execute count_stmt;
    deallocate prepare count_stmt;
    set p_out_rows = @rows_total;

    prepare main_stmt from @main_string;
    execute main_stmt;
    deallocate prepare main_stmt;
   
end

一款高效的存储过程分页代码

存储过程分页的基本原理:我们先对查找到的记录集(支持输入查找条件_whereclause和排列条件_orderby)的key字段临时存放到临时表,然后构建真正的记录集输出。

create   procedure   `mysqltestuser_select_pageable`(
        _whereclause   varchar(2000),     --   查找条件
        _orderby   varchar(2000),     --   排序条件
        _pagesize     int   ,       --   每页记录数
        _pageindex   int   ,     --   当前页码
        _docount       bit       --   标志:统计数据/输出数据
)
        not   deterministic
        sql   security   definer
        comment   ' '
begin
  --   定义key字段临时表
  drop   table   if   exists   _temptable_keyid;     --   删除临时表,如果存在
  create   temporary     table     _temptable_keyid
  (
userid   int
  )type=heap;

  --   构建动态的sql,输出关键字key的id集合
  --   查找条件
  set   @sql   =   'select     userid   from   mysqltestuser ';
  if   (_whereclause   is   not   null)     and   (_whereclause   <>   ' ')   then
  set   @sql=   concat(@sql,   '   where   '   ,_whereclause);
  end   if;

  if   (_orderby   is   not   null)     and     (_orderby   <> ' ')   then
  set   @sql=   concat(   @sql   ,   '   order   by   '   ,   _orderby);
  end   if;

  --   准备id记录插入到临时表
  set   @sql=concat( 'insert   into   _temptable_keyid(userid) ',   @sql);
  prepare   stmt   from   @sql;
  execute   stmt   ;
  deallocate   prepare   stmt;
--   key的id集合     [end]

--   下面是输出
if   (_docount=1)   then     --   统计
          begin
                    select   count(*)   as   recordcount   from   _temptable_keyid;
          end;
else                                   --   输出记录集
          begin
                  --   计算记录的起点位置
  set   @startpoint   =   ifnull((_pageindex-1)*_pagesize,0);
                  set   @sql= '                 select           a.*
      from       mysqltestuser   a
      inner   join   _temptable_keyid   b
      on     a.userid   =b.userid     ';

  set   @sql=concat(@sql, "     limit     ",@startpoint, "   , ",_pagesize);
                  prepare   stmt   from   @sql;
  execute   stmt   ;
  deallocate   prepare   stmt;
          end;
end   if;

  drop   table   _temptable_keyid;
end;


下面是mysqltestuser表的ddl:

create   table   `mysqltestuser`   (
    `userid`   int(11)   not   null   auto_increment,
    `name`   varchar(50)   default   null,
    `chinesename`   varchar(50)   default   null,
    `registerdatetime`   datetime   default   null,
    `jf`   decimal(20,2)   default   null,
    `description`   longtext,
    primary   key     (`userid`)
)   engine=innodb   default   charset=gb2312;


插入些数据:
insert   into   `mysqltestuser`   (`userid`,   `name`,   `chinesename`,   `registerdatetime`,   `jf`,   `description`)   values  
    (1, 'xuu1 ', 'www.aimeige.com.cn ', '2007-03-29   12:54:41 ',1.5, 'description1 '),
    (2, 'xuu2 ', 'www.111cn.net ', '2007-03-29   12:54:41 ',2.5, 'description2 '),

 

存储过程调用测试:

--   方法原型     `mysqltestuser_select_pageable`(条件,排列顺序,每页记录数,第几页,是否统计数据)
--   call   `mysqltestuser_select_pageable`(_whereclause   ,_orderby   ,_pagesize   ,_pageindex   ,   _docount)

--   统计数据
call   `mysqltestuser_select_pageable`(null,   null,   null,   null,   1)
--   输出数据,没条件限制,10条记录/页,第一页
call   `mysqltestuser_select_pageable`(null,   null,   10,   1,0)
--   输出数据,条件限制,排列,   10条记录/页,第一页
call   `mysqltestuser_select_pageable`( 'chinesename   like   ' '%飞3% ' ' ',   'userid   asc ',   10,   1,   0)


一款mysql .net的方法

mysql + asp教程.net来写网站,既然mysql已经支持存储过程了,那么像分页这么常用的东西,当然要用存储过程啦!
  不过在网上找了一些,发现都有一个特点——就是不能传出总记录数,干脆自己研究吧。终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了。贴代码吧直接:也算是对自己学习mysql的一个记录。
  create procedure p_pagelist
  (
  m_pageno int ,
  m_perpagecnt int ,
  m_column varchar(1000) ,
  m_table varchar(1000) ,
  m_condition varchar(1000),
  m_orderby varchar(200) ,
  out m_totalpagecnt int
  )
  begin
  set @pagecnt = 1; -- 总记录数
  set @limitstart = (m_pageno - 1)*m_perpagecnt;
  set @limitend = m_perpagecnt;
  set @sqlcnt = concat('select count(1) into @pagecnt from ',m_table); -- 这条语句很关键,用来得到总数值
  set @sql = concat('select ',m_column,' from ',m_table);
  if m_condition is not null and m_condition <> '' then
  set @sql = concat(@sql,' where ',m_condition);
  set @sqlcnt = concat(@sqlcnt,' where ',m_condition);
  end if;
  if m_orderby is not null and m_orderby <> '' then
  set @sql = concat(@sql,' order by ',m_orderby);
  end if;
  set @sql = concat(@sql, ' limit ', @limitstart, ',', @limitend);
  prepare s_cnt from @sqlcnt;
  execute s_cnt;
  deallocate prepare s_cnt;
  set m_totalpagecnt = @pagecnt;
  prepare record from @sql;
  execute record;
  deallocate prepare record;
  end

方法四

mysql的通用存储过程,本着共享的精神,为大家奉献这段mysql分页查询通用存储过程,假设所用数据库教程为guestbook:

use guestbook;
delimiter $$
drop procedure if exists prc_page_result $$
create procedure prc_page_result (
in currpage      int,
in columns       varchar(500),
in tablename     varchar(500),
in scondition    varchar(500),
in order_field   varchar(100),
in asc_field     int,
in primary_field varchar(100),
in pagesize      int
)
begin
    declare stemp  varchar(1000);
    declare ssql   varchar(4000);
    declare sorder varchar(1000);
   
    if asc_field = 1 then
        set sorder = concat( order by , order_field, desc );
        set stemp  = <(select min;
    else
        set sorder = concat( order by , order_field, asc );
        set stemp  = >(select max;
    end if;
   
    if currpage = 1 then
        if scondition <> then
            set ssql = concat(select , columns, from , tablename, where );
            set ssql = concat(ssql, scondition, sorder, limit ?);
        else
            set ssql = concat(select , columns, from , tablename, sorder, limit ?);
        end if;
    else
        if scondition <> then
            set ssql = concat(select , columns, from , tablename);
            set ssql = concat(ssql, where , scondition, and , primary_field, stemp);
            set ssql = concat(ssql, (, primary_field, ), from (select );
            set ssql = concat(ssql, , primary_field, from , tablename, sorder);
            set ssql = concat(ssql, limit , (currpage-1)*pagesize, ) as tabtemp), sorder);
            set ssql = concat(ssql, limit ?);
        else
            set ssql = concat(select , columns, from , tablename);
            set ssql = concat(ssql, where , primary_field, stemp);
            set ssql = concat(ssql, (, primary_field, ), from (select );
            set ssql = concat(ssql, , primary_field, from , tablename, sorder);
            set ssql = concat(ssql, limit , (currpage-1)*pagesize, ) as tabtemp), sorder);
            set ssql = concat(ssql, limit ?);
        end if;
    end if;
    set @ipagesize = pagesize;
    set @squery = ssql;
    prepare stmt from @squery;
    execute stmt using @ipagesize;
end;
$$
delimiter;
可以存储为数据库脚本,然后用命令导入:

mysql -u root -p < pageresult.sql;

调用:call prc_page_result(1, "*", "tablename", "", "columnname", 1, "pkid", 25);


*/
?>

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • c#读取excel方法实例分析

    这篇文章主要介绍了c#读取excel方法,实例分析了C#读取excel文件的原理与相关技巧,需要的朋友可以参考下...2020-06-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07