吴伟贤のBlog

Feed Rss

存档: ‘网页@Web’ 分类

CSS教程:div垂直居中的N种方法[转]

05.13.2009, CSS教程:div垂直居中的N种方法[转]已关闭评论, div+css & html, by .

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS

Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生

效,例如表格元素中的<td>、<th>、<caption>等,而像<div>、<span>这样的元素是没有valign特性的,因此使用vertical-align对它们不起

作用。 

    相关教程:div水平居中的N种方法

    一、单行垂直居中

    如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度height和所在行的高度line-height相等即可。

如: 

div {  
        height:25px;  
        line-height:25px;  
        overflow:hidden;  
}  
    这段代码很简,后面使用overflow:hidden的设置是为了防止内容超出容器或者产生自动换行,这样就达不到垂直居中效果了。更多CSS教

程。 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title> 单行文字实现垂直居中 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
body { font-size:12px;font-family:tahoma;}
div {
  height:25px;
  line-height:25px;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
}
  </style>
</head>
<body>
  <div>现在我们要使这段文字垂直居中显示!</div>
</body>
</html>

二、多行未知高度文字的垂直居中

    如果一段内容,它的高度是可变的那么我们就可以使用上一节讲到的实现水平居中时使用到的最后一种方法,就是设定Padding,使上下的

padding值相同即可。同样的,这也是一种“看起来”的垂直居中方式,它只不过是使文字把<div>完全填充的一种访求而已。可以使用类似下

面的代码: 

div {  
padding:25px;  
}  
    这种方法的优点就是它可以在任何浏览器上运行,并且代码很简单,只不过这种方法应用的前提就是容器的高度必须是可伸缩的。 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title> 多行文字实现垂直居中 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
body { font-size:12px;font-family:tahoma;}
div {
  padding:25px;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
}
  </style>
</head>
<body>
  <div><pre>现在我们要使这段文字垂直居中显示!
   div {
  padding:25px;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
}
</pre></div>

</body>
</html>
三、多行文本固定高度的居中

    在本文的一开始,我们已经说过CSS中的vertical-align属性只会对拥有valign特性的(X)HTML标签起作用,但是在CSS中还有一个display

属性能够模拟<table>,所以我们可以使用这个属性来让<div>模拟<table>就可以使用vertical-align了。注意,display:table和

display:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个<div>元素:

div#wrap {  
    height:400px;  
display:table;  
}  
div#content {  
  vertical-align:middle;  
    display:table-cell;  
   border:1px solid #FF0099;  
background-color:#FFCCFF;  
width:760px;  
}  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title> 多行文字实现垂直居中 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
body { font-size:12px;font-family:tahoma;}
div#wrap {
  height:400px;
  display:table;
}
div#content {
  vertical-align:middle;
  display:table-cell;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
}
  </style>
</head>
<body>
<div id="wrap">
  <div id="content"><pre>现在我们要使这段文字垂直居中显示! Webjx.Com
div#wrap {
  height:400px;
  display:table;
}
div#content {
  vertical-align:middle;
  display:table-cell;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
}
</pre></div>
</div>
</body>
</html>
    这个方法应该是很理想了,但是不幸的是Internet Explorer 6 并不能正确地理解display:table和display:table-cell,因此这种方法在

Internet Explorer 6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法
四、在Internet Explorer中的解决方案

    在Internet Explorer 6及以下版本中,在高度的计算上存在着缺陷的。在Internet Explorer 6中对父元素进行定位后,如果再对子元素

进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的

高度,而从父元素继承来的定位高度)。例如,我们有下面这样一个(X)HTML代码段: 

<div id="wrap"> 
<div id="subwrap"> 
   <div id="content"> 
</div> 
</div>
</div>
    如果我们对subwrap进行了绝对定位,那么content也会继承了这个这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进

行相对定位的时候,你使用的100%分比将不再是content原有的高度
。例如,我们设定了subwrap的position为40%,我们如果想使content的上

边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才能使content回到原来的位置上去

,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现Internet Explorer 6中的垂直居中: 

div#wrap {  
    border:1px solid #FF0099;  
background-color:#FFCCFF;  
width:760px;  
  height:400px;  
position:relative;  
}  
div#subwrap {  
  position:absolute;  
    border:1px solid #000;  
    top:50%;  
}  
div#content {  
    border:1px solid #000;  
    position:relative;  
    top:-50%;  
}  
    当然,这段代码只能在Internet Exlporer 6等计算存在问题的浏览器中才会有作用。(不过我不解,我查阅了很多文章,不知道是因为出

处相同还是什么原因,似乎很多人都不愿意去解释Internet Exlporer 6中这这个Bug的原理,我也只是了解了一点皮毛,还要再研究) 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title> 多行文字实现垂直居中 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
body { font-size:12px;font-family:tahoma;}
div#wrap {
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
  height:400px;
  position:relative;
}
div#subwrap {
  position:absolute;
  top:50%;
}
div#content {
  position:relative;
  top:-50%;
}
  </style>
</head>
<body>
<div id="wrap">
  <div id="subwrap">
   <div id="content"><pre>现在我们要使这段文字垂直居中显示!
div#wrap {
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
  height:500px;
  position:relative;
}
div#subwrap {
  position:absolute;
  border:1px solid #000;
  top:50%;
}
div#content {
  border:1px solid #000;
  position:relative;
  top:-50%;
}</pre>
  </div>
</div>
</div>
</body>
</html>
五、完美的解决方案

    那么我们综合上面两种方法就可以得到一个完美的解决方案,不过这要用到CSS hack的知识。对于如果使用CSS Hack来区分浏览器,你可

以参考这篇“简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera”: 

div#wrap {  
    display:table;  
    border:1px solid #FF0099;  
background-color:#FFCCFF;  
width:760px;  
  height:400px;  
_position:relative;  
   overflow:hidden;  
}  
div#subwrap {  
    vertical-align:middle;  
    display:table-cell;  
   _position:absolute;  
   _top:50%;  
}  
div#content {  
   _position:relative;  
   _top:-50%;  
}  
    至此,一个完美的居中方案就产生了。 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title> 多行文字实现垂直居中 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
body { font-size:12px;font-family:tahoma;}
div#wrap {
  display:table;
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
  height:400px;
  _position:relative;
  overflow:hidden;
}
div#subwrap {
  vertical-align:middle;
  display:table-cell;
  _position:absolute;
  _top:50%;
}
div#content {
  _position:relative;
  _top:-50%;
}
  </style>
</head>
<body>
<div id="wrap">
  <div id="subwrap">
   <div id="content"><pre>现在我们要使这段文字垂直居中显示!
div#wrap {
  border:1px solid #FF0099;
  background-color:#FFCCFF;
  width:760px;
  height:500px;
  position:relative;
}
div#subwrap {
  position:absolute;
  border:1px solid #000;
  top:50%;
}
div#content {
  border:1px solid #000;
  position:relative;
  top:-50%;
}</pre>
  </div>
</div>
</div>
</body>
</html>
     p.s. 垂直居中vertical-align的值是middle,而水平居中align的值是center,虽然同是居中但关键字不同

了解更多

DIV 居中的绝好解决方法

05.13.2009, DIV 居中的绝好解决方法已关闭评论, div+css & html, by .

现在进行WEB重构的时候,一般我们做DIV 居中是这样:

body{
margin:0px auto;
text-align:center;
}

但是在没申明下面这句解析方法的时候,页面就会出错.不能居中对齐!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

为此困扰了我几天.那么有的朋友就会说:你加上这句不就行了吗? 可是有时候页面并不能全部按上面规定的代码格式来编写,比如说要改多彩滚动条.
直到昨天,一个想法在我脑中闪了一下. 何不用JS来控制页面的边距?说干就干!
找了个页面.添加了下面的一小段代码.

<script language="javascript" type="text/javascript" src="function.js"></script>
function.js内容:
if(window.screen.width>800){document.write("<style type=\"text/css\">body{margin-left:"+(window.screen.width-800)/2+"px}</style>");}

保存,测试. 哈哈,换了几个分辨率都可以正常居中!至此试验成功.
总结一下:
主要是这句代码起的作用:
(window.screen.width-800)/2 //计算页面应该留出的边距数值.800为我的DIV宽度 + 滚动条宽度.实际应用改为你自己的大小.
补充一点:上面这段JS 必须放在你的最后一个CSS连接或</style>的后面.

了解更多

php中wml页面自动跳转

05.12.2009, php中wml页面自动跳转已关闭评论, php, by .

function redirect($newURL)
{
ob_clean();
echo "<?xml version=\"1.0\" encoding=\"uft-8\"?>\t\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.xml\">\t\n";
echo "<wml>\t\n";
echo "<card ontimer=’$newURL’>\t\n";
echo "<timer value=’1′ />";
   echo "</card>\t\n</wml>\t\n";
   exit();
}

了解更多

今天你变灰了吗? 网页变灰教程

05.11.2009, 今天你变灰了吗? 网页变灰教程已关闭评论, div+css & html, by .

以下为全站CSS代码。   
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }   
使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地震中遇难的同胞哀悼。   
如果网站没有使用CSS,可以在网页/模板的HTML代码   <head>和   </head> 之间插入:   
<style>   
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}   
</style>   
有一些站长的网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">   
请将网页最头部的   <html>替换为以上代码。   
有一些网站FLASH动画的颜色不能被CSS滤镜控制,可以在FLASH代码的   <object …>和   </object>之间插入:   
<param value="false" name="menu"/>   
<param value="opaque" name="wmode"/>   
最简单的把页面变成灰色的代码是在head 之间加   
<style type="text/css">   
html {   
    FILTER: gray   
}   
</style>   

了解更多

md5 16位转32位的转化思路

04.24.2009, md5 16位转32位的转化思路已关闭评论, php, by .
  • 1、会员32位加密 与 16位加密 共享密码字段存储。
  • 2、当会员登陆时,分别判断是否与 16位 或 32 位 相等。如果两者其一相等,则登陆成功。
  • 3、如果是16位相等的,则登陆成功的同时对密码重新32位加密写入数据库
  • 4、等待所有会员密码为16位转换完成,去掉 2 所加入的 16位 相等的判断代码。
  • 5 按以上步骤操作完全可以达到要求。不需要会员重新注册。
  •  

    php 中

    1. 16位的MD5加密用substr函数截取了字符得到实现….
    2. 比如 "admin" MD5.
    3. 32位: 21232f297a57a5a743894a0e4a801fc3
    4. 16位: ________7a57a5a743894a0e________
    5. 可以看出 其实 16位和32的小写MD5编码对比下来 
    6. 16位编码其实就是把32位编码的前后分别去掉8个字符,因此可以实现算出32位密码
    7. 通过substr()函数得到16位编码
    <?php
    echo substr(md5("admin"),8,16); // 16位MD5加密
    echo "<hr>";
    echo md5("admin"); // 32位MD5加密
    ?>

    了解更多

    请问如何在页不刷新的情况下,点击某按钮,给一个文本输入框赋值

    04.09.2009, 请问如何在页不刷新的情况下,点击某按钮,给一个文本输入框赋值已关闭评论, div+css & html, by .

    <form name="f">
    <input type="text" name="a">
    <input type="button" name="b" value="赋值" onClick="document.f.a.value=’搞定了’">
    </form>
    了解更多

    php字符串中提取数字

    03.09.2009, php字符串中提取数字已关闭评论, php, by .

    如:78.34万元

    结果取得
    数字部分78.34 (数字为任意)
    字符部分 万元  (字符为可变)

    请问在php中如何实现?谢谢

     

    方法一:

    需要数字直接转就可以了,会自动截取到第一个不是数字的字符为止,但是前提是第一个字符是数字开头的
    $foo = "78.34万元" + 0;          // $foo is float (78.34)
    然后你再算下数字的长度,取原串后面的内容就可以了

    了解更多

    PHP导入导出Excel方法小结

    02.19.2009, PHP导入导出Excel方法小结已关闭评论, php, by .

    最近因项目需要,需要开发一个模块,把系统中的一些数据导出成Excel,修改后再导回系统。就趁机对这个研究了一番,下面进行一些总结。
    基本上导出的文件分为两种:
    1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。
    优点:简单。
    缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。
    2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。

    如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
    $yourStr = mb_convert_encoding("gb2312", "UTF-8", $yourStr);

    下面详细列举几种方法。
    一、PHP导出Excel

    1:第一推荐无比风骚的PHPExcel,官方网站: http://www.codeplex.com/PHPExcel
    导入导出都成,可以导出office2007格式,同时兼容2003。
    下载下来的包中有文档和例子,大家可以自行研究。
    抄段例子出来:
    <?php
    /**
    * PHPExcel
    *
    * Copyright (C) 2006 – 2007 PHPExcel
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    * License as published by the Free Software Foundation; either
    * version 2.1 of the License, or (at your option) any later version.
    *
    * This library is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    * Lesser General Public License for more details.
    *
    * You should have received a copy of the GNU Lesser General Public
    * License along with this library; if not, write to the Free Software
    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    *
    * @category   PHPExcel
    * @package    PHPExcel
    * @copyright Copyright (c) 2006 – 2007 PHPExcel ( http://www.codeplex.com/PHPExcel)
    * @license    http://www.gnu.org/licenses/lgpl.txt    LGPL
    * @version    1.5.0, 2007-10-23
    */

    /** Error reporting */
    error_reporting(E_ALL);

    /** Include path **/
    set_include_path(get_include_path() . PATH_SEPARATOR . ‘../Classes/’);

    /** PHPExcel */
    include ‘PHPExcel.php’;

    /** PHPExcel_Writer_Excel2007 */
    include ‘PHPExcel/Writer/Excel2007.php’;

    // Create new PHPExcel object
    echo date(‘H:i:s’) . " Create new PHPExcel object\n";
    $objPHPExcel = new PHPExcel();

    // Set properties
    echo date(‘H:i:s’) . " Set properties\n";
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
    $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
    $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
    $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
    $objPHPExcel->getProperties()->setDescrīption("Test document for Office 2007 XLSX, generated using PHP classes.");
    $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
    $objPHPExcel->getProperties()->setCategory("Test result file");

    // Add some data
    echo date(‘H:i:s’) . " Add some data\n";
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->setCellValue(‘A1’, ‘Hello’);
    $objPHPExcel->getActiveSheet()->setCellValue(‘B2’, ‘world!’);
    $objPHPExcel->getActiveSheet()->setCellValue(‘C1’, ‘Hello’);
    $objPHPExcel->getActiveSheet()->setCellValue(‘D2’, ‘world!’);

    // Rename sheet
    echo date(‘H:i:s’) . " Rename sheet\n";
    $objPHPExcel->getActiveSheet()->setTitle(‘Simple’);

    // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    $objPHPExcel->setActiveSheetIndex(0);

          
    // Save Excel 2007 file
    echo date(‘H:i:s’) . " Write to Excel2007 format\n";
    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    $objWriter->save(str_replace(‘.php’, ‘.xlsx’, __FILE__));

    // Echo done
    echo date(‘H:i:s’) . " Done writing file.\r\n";

    2、使用pear的Spreadsheet_Excel_Writer
    下载地址: http://pear.php.net/package/Spreadsheet_Excel_Writer
    此类依赖于OLE,下载地址:http://pear.php.net/package/OLE
    需要注意的是导出的Excel文件格式比较老,修改后保存会提示是否转换成更新的格式。
    不过可以设定格式,很强大。
    <?php
    require_once ‘Spreadsheet/Excel/Writer.php’;

    // Creating a workbook
    $workbook = new Spreadsheet_Excel_Writer();
       
    // sending HTTP headers
    $workbook->send(‘test.xls’);
       
    // Creating a worksheet
    $worksheet =& $workbook->addWorksheet(‘My first worksheet’);
       
    // The actual data
    $worksheet->write(0, 0, ‘Name’);
    $worksheet->write(0, 1, ‘Age’);
    $worksheet->write(1, 0, ‘John Smith’);
    $worksheet->write(1, 1, 30);
    $worksheet->write(2, 0, ‘Johann Schmidt’);
    $worksheet->write(2, 1, 31);
    $worksheet->write(3, 0, ‘Juan Herrera’);
    $worksheet->write(3, 1, 32);
       
    // Let’s send the file
    $workbook->close();
    ?>

    3:利用smarty,生成符合Excel规范的XML或HTML文件
    支持格式,非常完美的导出方案。不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。
    详细内容请见rardge大侠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757

    需要注意的是如果导出的表格行数不确定时,最好在模板中把"ss:ExpandedColumnCount="5" ss:ExpandedRowCount="21""之类的东西删掉。

    4、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保存,还不会弹出提示,推荐用这种方法。
    缺点是无格式。
    <?php
    // Send Header
    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=test.xls ");
    header("Content-Transfer-Encoding: binary ");
    // XLS Data Cell

    xlsBOF();
    xlsWriteLabel(1,0,"My excel line one");
    xlsWriteLabel(2,0,"My excel line two : ");
    xlsWriteLabel(2,1,"Hello everybody");

    xlsEOF();

    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);
      &n
    bsp; return;
    }
    function xlsWriteLabel($Row, $Col, $Value ) {
        $L = strlen($Value);
        echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
        echo $Value;
        return;
    }
    ?>
    不过笔者在64位linux系统中使用时失败了,断句符号全部变成了乱码。

    5、使用制表符、换行符的方法
    制表符"\t"用户分割同一行中的列,换行符"\t\n"可以开启下一行。
    <?php
    header("Content-Type: application/vnd.ms-execl");
    header("Content-Disposition: attachment; filename=myExcel.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    /*first line*/
    echo "hello"."\t";
    echo "world"."\t";
    echo "\t\n";

    /*start of second line*/
    echo "this is second line"."\t";
    echo "Hi,pretty girl"."\t";
    echo "\t\n";
    ?>

    6、使用com
    如果你的PHP可以开启com模块,就可以用它来导出Excel文件
    <?PHP
    $filename = "c:/spreadhseet/test.xls";
    $sheet1 = 1;
    $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";
    $Workbook = $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
    $Worksheet = $Workbook->Worksheets($sheet1);
    $Worksheet->activate;
    $excel_cell = $Worksheet->Range("C4");
    $excel_cell->activate;
    $excel_result = $excel_cell->value;
    print "$excel_result\n";
    $Worksheet = $Workbook->Worksheets($sheet2);
    $Worksheet->activate;
    $excel_cell = $Worksheet->Range("C4");
    $excel_cell->activate;
    $excel_result = $excel_cell->value;
    print "$excel_result\n";
    #To close all instances of excel:
    $Workbook->Close;
    unset($Worksheet);
    unset($Workbook);
    $excel_app->Workbooks->Close();
    $excel_app->Quit();
    unset($excel_app);
    ?>
    一个更好的例子: http://blog.chinaunix.net/u/16928/showart_387171.html

    一、PHP导入Excel

    1:还是用PHPExcel,官方网站: http://www.codeplex.com/PHPExcel。

    2:使用PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader
    举例:
    <?php
    require_once ‘Excel/reader.php’;

    // ExcelFile($filename, $encoding);
    $data = new Spreadsheet_Excel_Reader();

    // Set output Encoding.
    $data->setOutputEncoding(‘utf8’);

    $data->read(‘ jxlrwtest.xls’);

    error_reporting(E_ALL ^ E_NOTICE);

    for ($i = 1; $i <= $data->sheets[0][‘numRows’]; $i++) {
        for ($j = 1; $j <= $data->sheets[0][‘numCols’]; $j++) {
            echo "\"".$data->sheets[0][‘cells’][$i][$j]."\",";
        }
        echo "\n";
    }

    ?>
     

    了解更多

    PHP导出csv excel 格式的文件

    02.10.2009, PHP导出csv excel 格式的文件已关闭评论, php, by .

    CVS的例子

    <?
    header("Content-type:application/vnd.ms-excel"
    );
    header("Content-Disposition:filename=test.csv"
    );
    echo
    "test1,"
    ;
    echo
    "test2,"
    ;
    echo
    "test1,"
    ;
    echo
    "test2,"
    ;
    echo
    "test1,"
    ;
    echo
    "test2,"
    ;
    echo
    "test1,"
    ;
    echo
    "test2,"
    ;
    echo
    "test1,"
    ;
    echo
    "test2,"
    ;
    echo
    "test1,"
    ;
    echo
    "test2\t\n"
    ;
    ?>

    EXCEL的例子

    <?
    header
    ("Content-type:application/vnd.ms-excel"
    );
    header("Content-Disposition:filename=test.xls"
    );
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    echo
    "test1\t"
    ;
    echo
    "test2\t\n"
    ;
    ?>

    了解更多

    php取整函数

    11.12.2008, php取整函数已关闭评论, php, by .

    经常用到的PHP取整函数,主要是:ceil,floor,round,intval

    ceil — 进一法取整
    说明
    float ceil ( float value )
    返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

    例子 1. ceil() 例子

    <?php
    echo ceil(4.3);     // 5
    echo ceil(9.999);     // 10
    ?>

    floor — 舍去法取整
    说明
    float floor ( float value )
    返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

    了解更多