> 백엔드 개발 > PHP 튜토리얼 > Excel 테이블을 내보내는 PHP의 종합 예

Excel 테이블을 내보내는 PHP의 종합 예

WBOY
풀어 주다: 2016-07-25 08:55:07
원래의
1226명이 탐색했습니다.
  1. include("config.php");

  2. // load library
  3. require.php");
  4. // load library
  5. require 'php");
  6. // load library
  7. excel.class.php';
  8. // create a simple 2-dimensional array
  9. //@mysql_query("set character set gb2312");
  10. $strSql="select * from booklist";
  11. $result=mysql_query($strSql);
  12. //print_r($result);

  13. $data = array(

  14. 1 => array ('id', "書名"),//標題使用中文則到表格裡面值為空,待解決
  15. );
  16. while($row=mysql_fetch_array($result))
  17. {
  18. array_push($data,array($row['bookid'], $row['bookname']));
  19. }
  20. // generate file (constructor parameters are optional)
  21. $xls = new Excel_XML('UTF-8', false, 'My Test Sheet');
  22. $xls->addArray($data);
  23. $xls->generateXML('my-test');
  24. ?>
  25. /**
  26. * 從 PHP5 產生簡單的 excel
  27. *
  28. * @version 1.0
  29. */
  30. /**

  31. * 從 PHP5 即時產生 excel 文檔
  32. *
  33. * 使用 excel XML 規範生成本機
  34. * XML 文檔,可由 excel 讀取/處理。
  35. *
  36. * @package Utilities
  37. * @version 1.1
  38. *
  39. * @todo 問題#4:Internet Explorer 7 不能很好地處理給定的標頭
  40. * @ todo 新增選項以首先給出行作為標題(粗體文字)
  41. * @todo 新增選項以將最後一行作為頁腳(粗體文字)
  42. * @todo 新增選項以寫入檔案
  43. */
  44. class Excel_XML
  45. {
  46. /**

  47. * (文檔的)標題
  48. * @var string
  49. */
  50. private $header = "n";
  51. /**

  52. * (文件的頁腳)
  53. * @var string
  54. */
  55. private $footer = "
  56. ";
  57. /**

  58. * Excel 文件中要輸出的行
  59. * @var array
  60. */
  61. private $lines = array();
  62. /**

  63. * 使用的編碼
  64. * @var string
  65. */
  66. private $sEncoding;
  67. /**

  68. * 轉換變數型別
  69. * @var boolean
  70. * /
  71. private $bConvertTypes;
  72. /**

  73. * 工作表標題
  74. * @var string
  75. */
  76. private $sWorksheetTitle;
  77. /**

  78. * 建構子
  79. *
  80. * 建構子允許設定一些額外的
  81. * 參數,以便函式庫可以依照
  82. * 的需要進行配置。
  83. *
  84. * On轉換類型:
  85. * 當設定為 true 時,函式庫會嘗試辨識
  86. * 變數值的類型,並相應地設定 Excel
  87. * 的欄位規格。請小心商品編號或郵遞區號
  88. * 以「0」(零)開頭!
  89. *
  90. * @param string $sEncoding 要使用的編碼(預設為UTF-8)
  91. * @ param boolean $bConvertTypes 將變數轉換為欄位規格
  92. * @param string $sWorksheetTitle 工作表的標題
  93. * /
  94. public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1')
  95. {
  96. $this->bConvertTypes = $bConvertTypes;$this->bConvertTypes = $bConvertTypes;setEncoding($sEncoding);
  97. $this->setWorksheetTitle($sWorksheetTitle);
  98. }
  99. /**

  100. * 設定編碼
  101. * @param string 要設定的編碼類型
  102. */
  103. public function setEncoding( $sEncoding)
  104. {
  105. $this->sEncoding = $sEncoding;
  106. }
  107. /**

  108. * 設定工作表標題
  109. *
  110. * 刪除不允許的字元並將
  111. * 標題修剪為最大長度 31。
  112. *
  113. * @param string $title 的標題工作表
  114. */
  115. public function setWorksheetTitle ($title )
  116. {
  117. $title = preg_replace ("/[\|:|/|?|*|[|]]/", "", $title);$title = substr ($title , 0, 31);$this->sWorksheetTitle = $title;}
  118. /**

  119. * 행 추가
  120. *
  121. * 문서에 단일 행을 추가합니다. true로 설정된 경우 self::bConvertTypes
  122. *는 변수 유형을 확인하고 셀에 대한 특정 필드 설정
  123. *을 반환합니다.
  124. *
  125. * @param array $array 1차원 배열 행 내용
  126. */
  127. 비공개 함수 addRow($array)
  128. {
  129. $cells = "";
  130. foreach($array $k => $v):
  131. $type = 'String';
  132. if ($this->bConvertTypes === true && is_numeric($v)):
  133. $type = ' Number';
  134. endif;
  135. $v = htmlentities($v, ENT_COMPAT, $this->sEncoding);
  136. $cells .= "" . $v . "n";
  137. endforeach;
  138. $this->lines[] = "n" . $ 셀 . "n";
  139. }

  140. /**

  141. * 문서에 배열 추가
  142. * @param array 2차원 배열
  143. */
  144. 공개 함수 addArray($array)
  145. {
  146. foreach($array as $k => $v)
  147. $this->addRow ($v);
  148. }

  149. /**
  150. * 엑셀 파일 생성
  151. * @param string $filename 생성할 엑셀 파일 이름(...xls)
  152. */
  153. 공용 함수 generateXML($filename = 'excel-export')
  154. {
  155. // 파일 이름 수정/검증
  156. $filename = preg_replace('/[^aA-zZ0-9_ -]/', '', $filename);

  157. // 헤더 전달(PHP 매뉴얼에서 권장됨)

  158. header("Content-Type: application/vnd.ms -excel; charset=" . $this->sEncoding);
  159. header("Content-Disposition: inline; filename="" . $filename . ".xls"");

  160. // 브라우저에 문서 인쇄

  161. // ">"
  162. 에코 스트립슬래시를 위해 스트립슬래시를 사용해야 합니다(sprintf($this->header, $this->sEncoding) );
  163. echo "nsWorksheetTitle . "">nn";
  164. foreach ($this->lines as $line)
  165. echo $line;

  166. echo "

  167. n
    n";
  168. echo $this->footer;
  169. }
  170. }
  171. ?>

复主代码


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿