首頁 >後端開發 >php教程 >php匯出excel表格綜合範例

php匯出excel表格綜合範例

WBOY
WBOY原創
2016-07-25 08:55:071229瀏覽
  1. include("config.php");

  2. // 라이브러리 로드
  3. require ' php-excel.class.php';
  4. // 간단한 2차원 배열 생성
  5. //@mysql_query("set 문자 집합 gb2312");
  6. $strSql="select * from booklist";
  7. $result=mysql_query($strSql);

  8. //print_r($result);

  9. $data = 배열(

  10. 1 => array ('id', "Book title"), //제목이 중국어라면 테이블의 값은 비어 있으므로 풀어야 합니다
  11. );
  12. while($ row=mysql_fetch_array($result ))
  13. {
  14. array_push($data,array($row['bookid'], $row['bookname']));
  15. }
  16. // 생성 파일(생성자 매개변수는 선택사항)
  17. $xls = new Excel_XML('UTF-8', false, 'My Test Sheet');
  18. $xls->addArray($data);
  19. $xls ->generateXML(' my-test');
  20. ?>

  21. /**
  22. * PHP5에서 간단한 엑셀 생성
  23. *
  24. * @version 1.0
  25. */

  26. /**

  27. * PHP5에서 즉시 Excel 문서 생성
  28. *
  29. * Excel XML 사양을 사용하여 기본
  30. * Excel에서 읽고 처리할 수 있는 XML 문서를 생성합니다.
  31. *
  32. * @package Utilities
  33. * @version 1.1
  34. *
  35. * @todo 문제 #4: Internet Explorer 7이 해당 헤더와 제대로 작동하지 않습니다
  36. * @todo 먼저 제공할 옵션 추가 한 줄을 머리글로 표시(굵게 표시)
  37. * @todo 마지막 줄을 바닥글로 표시하는 옵션 추가(굵게 표시)
  38. * @todo 파일에 쓰기 옵션 추가
  39. */
  40. class Excel_XML
  41. {
  42. /**

  43. * 헤더(문서)
  44. * @var string
  45. */
  46. 비공개 $header = " n

    /**

  47. * 바닥글(문서)
  48. * @var string
  49. */
  50. private $footer = "";

  51. /**

  52. * 엑셀 문서에 출력할 라인
  53. * @var array
  54. */
  55. private $lines = array();

  56. /**

  57. * 사용된 인코딩
  58. * @var 문자열
  59. */
  60. 비공개 $sEncoding;

  61. /**

  62. * 변수 유형 변환
  63. * @var boolean
  64. */
  65. 비공개 $bConvertTypes;
  66. * 워크시트 제목
  67. * @var string
  68. */
  69. private $sWorksheetTitle;

  70. /**

  71. * 생성자
  72. *
  73. * 생성자를 사용하면 몇 가지 추가
  74. * 매개변수를 설정할 수 있으므로
  75. * 필요에 따라 라이브러리를 구성할 수 있습니다.
  76. *
  77. * 켜짐 유형 변환:
  78. * true로 설정하면 라이브러리는
  79. * 변수 값의 유형을 식별하고 그에 따라 Excel
  80. *에 대한 필드 사양을 설정하려고 시도합니다. 기사번호나 우편번호에 주의하세요
  81. * '0'(영)으로 시작!
  82. *
  83. * @param string $sEncoding 사용할 인코딩(기본값은 UTF-8)
  84. * @ param boolean $bConvertTypes 변수를 필드 사양으로 변환
  85. * @param string $sWorksheetTitle 워크시트 제목
  86. */
  87. public 함수 __construct ($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1')
  88. {
  89. $this->bConvertTypes = $bConvertTypes;
  90. $this->setEncoding($ sEncoding);
  91. $this ->setWorksheetTitle($sWorksheetTitle);
  92. }

  93. /**

  94. * 인코딩 설정
  95. * @param string 설정할 인코딩 유형
  96. */
  97. 공용 함수 setEncoding($sEncoding )
  98. {
  99. $this->sEncoding = $sEncoding;
  100. }

  101. /**

  102. * 워크시트 제목 설정
  103. *
  104. * 허용되지 않는 문자를 제거하고
  105. * 제목을 최대 31자 길이로 자릅니다.
  106. *
  107. * @param string $title Title for 워크시트
  108. */
  109. 공개 함수 setWorksheetTitle($ title)
  110. {
  111. $title = preg_replace ("/[\|:|/|?|*|[|]]/", "", $title);
  112. $title = substr ($ 제목, 0, 31);
  113. $this->sWorksheetTitle = $title;
  114. }
  115. /**

  116. * 新增行
  117. *
  118. * 在文件中新增一行。如果設定為 true,self::bConvertTypes
  119. * 檢查變數的類型並傳回儲存格的特定欄位設定
  120. *。
  121. *
  122. * @param array $array 一維數組行內容
  123. */
  124. 私有函數addRow ($array)
  125. {
  126. $cells = "";
  127. foreach ($array as $ k => $v):
  128. $type = 'String';
  129. if ($this->bConvertTypes === true && is_numeric($v)):
  130. $type = ' Number';
  131. endif;
  132. $v = htmlentities($v, ENT_COMPAT, $this->sEncoding);
  133. $cells .= "n" 。 $細胞。 "n";
  134. }
  135. /**

  136. * 在文件中加入陣列
  137. * @param array 二維陣列
  138. */
  139. public function addArray ($array)
  140. {
  141. foreach ($ array as $k => $v)
  142. $this->addRow ($v);
  143. }
  144. /**
  145. * 產生 excel 檔案
  146. * @param string $filename 要產生的 excel 檔案的名稱 (...xls)
  147. */
  148. public functiongenerateXML ($filename = 'excel-export')
  149. {
  150. //修正/驗證檔案名稱
  151. $filename = preg_replace('/[^aA-zZ0-9_ -]/', '' , $filename);
  152. // 傳遞標頭(依照php 手冊中的建議)

  153. header("Content-Type: application/vnd.ms -excel; charset=" . $this->sEncoding);
  154. header("Content-Disposition: inline; filename="" . $filename . ".xls"");
  155. // 將文件列印到瀏覽器

  156. // 需要使用該死的「>」
  157. echo stripslashes (sprintf($this->header, $this->sEncoding) );
  158. echo "nsWorksheetTitle . "">nn";
  159. foreach ($this->lines as $line)
  160. echo $line;
  161. echo "

  162. n
    n";
  163. echo $this->footer;
  164. }
  165. }
  166. ?>
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn