用excel.php类库导出excel文件

excel.php是个小型的php类库,可以满足基本的从数据库中取出数据然后导出xls格式的excel文件,代码如下:

  1 class Excel {
  2     public $filename = ‘excel‘;
  3     public $custom_titles;
  4
  5     public function make_from_db($db_results)
  6     {
  7         $data         = NULL;
  8         $fields     = $db_results->field_data();
  9         if ($db_results->num_rows() == 0)
 10         {
 11             show_error(‘The table appears to have no data‘);
 12         }
 13         else
 14         {
 15             $headers = $this->titles($fields);
 16             foreach ($db_results->result() AS $row)
 17             {
 18                 $line = ‘‘;
 19                 foreach ($row AS $value)
 20                 {
 21                     if (!isset($value) OR $value == ‘‘)
 22                     {
 23                         $value = "\t";
 24                     }
 25                     else
 26                     {
 27                         $value = str_replace(‘"‘, ‘""‘, $value);
 28                         $value = ‘"‘ . $value . ‘"‘ . "\t";
 29                     }
 30                     $line .= $value;
 31                 }
 32                 $data .= trim($line) . "\n";
 33             }
 34             $data = str_replace("\r", "", $data);
 35             $this->generate($headers, $data);
 36         }
 37     }
 38
 39     public function make_from_array($titles, $array, $filename = ‘excel‘)
 40     {
 41         $data = NULL;
 42         $this->filename = $filename;
 43
 44         if ( ! is_array($array))
 45         {
 46             show_error(‘The data supplied is not a valid array‘);
 47         }
 48         else
 49         {
 50             $headers = $this->titles($titles);
 51             if (is_array($array))
 52             {
 53                 foreach ($array AS $row)
 54                 {
 55                     $line = ‘‘;
 56                     foreach ($row AS $value)
 57                     {
 58                         if (!isset($value) OR $value == ‘‘)
 59                         {
 60                             $value = "\t";
 61                         }
 62                         else
 63                         {
 64                             $value = str_replace(‘"‘, ‘""‘, $value);
 65                             $value = ‘"‘ . $value . ‘"‘ . "\t";
 66                         }
 67                         $line .= $value;
 68                     }
 69                     $data .= trim($line) . "\n";
 70                 }
 71                 $data = str_replace("\r", "", $data);
 72                 $this->generate($headers, $data);
 73             }
 74         }
 75     }
 76
 77     public function titles($titles)
 78     {
 79         if (is_array($titles))
 80         {
 81             $headers = array();
 82             if (is_null($this->custom_titles))
 83             {
 84                 if (is_array($titles))
 85                 {
 86                     foreach ($titles AS $title)
 87                     {
 88                         $headers[] = $title;
 89                     }
 90                 }
 91                 else
 92                 {
 93                     foreach ($titles AS $title)
 94                     {
 95                         $headers[] = $title->name;
 96                     }
 97                 }
 98             }
 99             else
100             {
101                 $keys = array();
102                 foreach ($titles AS $title)
103                 {
104                     $keys[] = $title->name;
105                 }
106                 foreach ($keys AS $key)
107                 {
108                     $headers[] = $this->custom_titles[array_search($key, $keys)];
109                 }
110             }
111             return implode("\t", $headers);
112         }
113     }
114
115     private function generate($headers, $data)
116     {
117         $this->set_headers();
118         echo "$headers\n$data";
119     }
120
121     private function set_headers()
122     {
123         header("Pragma: public");
124         header("Expires: 0");
125         header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
126         header("Content-Type: application/force-download");
127         header("Content-Type: application/octet-stream");
128         header("Content-Type: application/download");;
129         header("Content-Disposition: attachment; filename=$this->filename.xls");
130         header("Content-Transfer-Encoding: binary ");
131     }
132 }

这里用其中的一种方法导出xls文件:

$titles = array(‘姓名‘, ‘年龄‘, ‘性别‘, ‘民族‘); //设置表格的头部名称
$array = array(
    array(‘张三‘, ‘18‘, ‘男‘, ‘汉族‘),
    array(‘李四‘, ‘19‘, ‘男‘, ‘汉族‘),
    array(‘王五‘, ‘18‘, ‘男‘, ‘汉族‘),
);//下面把执行这个方法就行了
make_from_array($titles, $array, $filename);
				
时间: 2024-11-05 21:43:44

用excel.php类库导出excel文件的相关文章

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

.Net常用技巧_调用Excel模板格式导出Excel

object missing = System.Reflection.Missing.Value;  //表示缺i省object SaveFileDialog savedialog = new SaveFileDialog(); savedialog.Filter = "(*.xlsx)|*.xlsx|(*.xls)|*.xls"; savedialog.Title = "导成Excel"; if (savedialog.ShowDialog() == Dialog

C# NPOI导出Excel和EPPlus导出Excel比较

系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http://npoi.codeplex.com/ EPPlus官网地址:http://epplus.codeplex.com/ 添加NPOI.EPPlus类库dll使用的是NuGet添加. 在类库References右键Manage NuGet Packages...,之后选择添加对应的dll. 测试结果显

【Spring+Excel】spring导出Excel

需要的jar包 以poi开头的jar包都是必须的 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

(C#)利用Aspose.Cells组件导入导出excel文件

Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: [csharp] view plain copy print? public static System.Data.DataTable ReadExcel(String strFileName) { Workbook book = new Workbook(); book.Open(strFileName); Worksheet sheet = book.Worksheets[0]; Cells cells = 

【转】 (C#)利用Aspose.Cells组件导入导出excel文件

Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFileName) { Workbook book = new Workbook(); book.Open(strFileName); Worksheet sheet = book.Worksheets[0]; Cells cells = sheet.Cells; return cells.Export

Qt 导出EXCEL文件

QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath(),tr("Excel Files (*.xls)")); if (fileName.isEmpty()) return; if (excel(fileName))//调用导出Excel方法 { QMessageBox::about(this, QStringLiter

PHP导入导出excel表格图片(转)

写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wps等进行word等的生成之类的文章 )但是在读的时候,只用过一种,具体是什么忘了,要回去翻代码了.基本上导出的文件分为两种:1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件.优

Android导出Excel

最近需要做一个将手机中保存的JSON文件转换成容易阅读的Excel文件,故做了一个小demo,现将该demo用到的一些部件记录一下. 1.文件浏览器 为了方便找到所需的JSON文件,故现做了一个简易的文件浏览器. 1.1文件列表 文件列表采用的是Android的空间ListView进行展示的,下面简要对ListView做一个简单的概述. ListView的创建需要三个元素: (1)ListView中的每一列的View. (2)填入View的数据或者图片等. (3)连接数据与ListView的适配