分类 我爱编程 下的文章

解决 PHPExcel 长数字串显示为科学计数

在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号。

使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:
1、设置单元格为文本

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('Simple');//设置A3单元格为文本
$objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);//也可以设置整行或整列的style/*
//E 列为文本
$objPHPExcel->getActiveSheet()->getStyle('E')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//第三行为文本
$objPHPExcel->getActiveSheet()->getStyle('3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
*/

更多的格式可以在PHPExcel/Style/NumberFormat.php中找到。注意:上述的设置对长数字字符串还是以文本方式来显示科学计数法的结果,原因可能php在处理大数字时采用的科学计数法。

2、在设置值的时候显示的指定数据类型

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objPHPExcel->getActiveSheet()->setCellValueExplicit('D1',123456789033, PHPExcel_Cell_DataType::TYPE_STRING);

3、在数字字符串前加一个空格使之成为字符串

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('Simple');$objPHPExcel->getActiveSheet()->setCellValue('D1', ' ' . 123456789033);

推荐使用第二、三种,第一种没有根本解决问题。

转:http://www.gouguoyin.cn/php/83.html

ubuntu下删除源的几种方式

删除ppa源:

一、使用apt-get update找到需要删除源

sudo add-apt-repository --remove ppa:*****/**



二、cd  /etc/apt/sources.list.d 

找到需要删除的源文件使用sudo rm -rf ***


三、vi /etc/apt/sources.list

找到需要删除deb源,直接删除或者注释


四、桌面版ubuntu进入设置-软件和更新-其他软件     点击删除即可


Yii,验证码点击不刷新,render 和 renderPartial 的区别

Web 开发的过程中 ,  经常会用到验证码 ,  以防止机器人不断的提交数据 ,  造成网站的瘫痪 . Yii 里提供了一个验证码的插件 ,  就是 Captcha。参考资料http://houdunwang.com/lesson.html

  • 第一步:

  在项目中使用 Captcha 需要以下一些设置 : 在 Controller 里添加方法  actions

  public function actions ()  {    return array (      'captcha' => array (        'class' => 'CCaptchaAction' ,        'minLength' => 1 ,        'maxLength' => 5 ,        'backColor' => 0xFFFFFF ,        'width' => 100 ,        'height' => 40      )     );  }

  同时 ,  需要将 captacha 添加到 accessRules 里 ,  以允许所有用户访问该方法 . 如下

  添加一个属性:

  public $verifyCode;           array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),array('captcha', 'captcha', 'allowEmpty'=>!extension_loaded('gd'), 'on'=>'login'),//在rules数组最后添加:

  • 第二在你的视图里面加上以下代码  

  <?php $this->widget('CCaptcha'); ?>// 下面这个可以点击图片进行换验证码  <div><?php $this->widget('CCaptcha',array('showRefreshButton'=>false,'clickableImage'=>true,'imageOptions'=>array('alt'=>'点击换图','title'=>'点击换图','style'=>'cursor:pointer'))); ?></div>

  • 第三 我们需要在我们的 form model 中添加一个 verifycode 的属性来存放用户输入的验证码,然后通过 captcha 验证器来验证用户输入的验证码的准确性。

  public $verifyCode;并在rules中添加如下public function rules() {  return array(...array('verifyCode', 'captcha', 'on'=>'login', 'allowEmpty'=> !extension_loaded('gd')), ...     );}

  验证码为什么没有刷新的原因:

  后台登陆调用验证码,点击验证码不刷新,没有反应(所有验证码配置,参数都是正确的)。找错的时候发现可以刷新验证码的页面比不可以刷新验证码的页面多了一段 js 代码,用来处理点击验证码刷新的事件。

  为什么会少了一段代码?原来就是因为控制器分别调用了 renderPartial 和 render. 下面就说说它们的区别:

  在进行页面输出渲染的时候。

  render  输出父模板的内容,将渲染的内容,嵌入父模板。

  renderPartial  则不输出父模板的内容。只对本次渲染的局部内容,进行输出。

  同时还有个重要的区别:

  render  函数内部默认执行 processOutput($output) 函数, 会将把组件,比如 CTreeView  里面注册到 CClientScript  里面的需要的脚本进行渲染输出。

  而 renderPartial()  默认不自动渲染输出客户端脚本,需要进行参数的指定,才会输出:

  renderPartial($view,$data=null,$return=false,$processOutput=false)

  指定 processOutput  为  true  即可。

  就像我们遇到的问题,用 renderPartial 时,页面没有输出验证码刷新的那段 js,所以显示不正常。


手机QQ和微信自动跳转浏览器打开代码

手机QQ和微信打开网址 自动跳转到浏览器打开的代码


<script src=”https://open.mobile.qq.com/sdk/qqapi.js?_bid=152″></script>
<script type=”text/javascript”> 
mqq.ui.openUrl({ target: 2,url: “http://morfans.cn”}); 
</script>

转:http://morfans.cn/archives/2563

php post大量数据时发现数据丢失问题解决方法

最近在项目中,出现一个奇怪的现象,有一个大form里面有上千个input,提交的时候,老是发现post过来的数据不完整,一开始还怀疑是html 表单名称有冲突,排除掉了。

然后,网上找了一堆,php.ini 的post_max_size和upload_max_filesize都设置了很大的值,没用,nginx的client_max_body_size 500m;加到了那么大的值,也没用。

最后终于google到办法:

原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量,实在无语。

1111111111111 php post数据不完整

该值默认情况下是1000 , 不能满足有1000个以上输入项的需求,所以得在php.ini 里面加上更大的值如:

max_input_vars = 5000 ,修改后重启php,终于一切正常!