> 백엔드 개발 > PHP 튜토리얼 > Excel 데이터 내보내기를 위한 클래스 라이브러리 사용의 PHP 구현

Excel 데이터 내보내기를 위한 클래스 라이브러리 사용의 PHP 구현

墨辰丷
풀어 주다: 2023-03-28 19:42:01
원래의
1264명이 탐색했습니다.

这篇文章主要介绍了PHP实现导出excel数据的类库用法,结合实例形式分析了php操作Excel数据的读取与导出操作相关实现技巧,需要的朋友可以参考下

今天一个项目要做一个PHP导出数据用excel保存,在网上找到一个本来是想用phpexcel的,后来发现太难了,就换了一个但导出的歌声是XML

类写的很简单,但很实用。只能简单的导出字符串和数字二种格式。

如果你有兴趣,你可以拿去扩充了,基本够用。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

class Excel_XML

{

//定于私有变量,顶部标签

private $header = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:

office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:

office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">";

//底部标签

private $footer = "</Workbook>";

//定于行数组

private $lines = array();

//设置编码

private $sEncoding;

//设置类型

private $bConvertTypes;

//设置sheet名称

private $sWorksheetTitle;

//构造函数

public function __construct(

 $sEncoding = &#39;UTF-8&#39;,$bConvertTypes = false,$sWorksheetTitle = &#39;Table1&#39;)

{

$this->bConvertTypes = $bConvertTypes;

$this->setEncoding($sEncoding);

$this->setWorksheetTitle($sWorksheetTitle);

}

//设置编码,在构造函数里面默认的事UTF-8格式

public function setEncoding($sEncoding)

{

$this->sEncoding = $sEncoding;

}

//设置excel的头

public function setWorksheetTitle ($title)

{

$title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);

$title = substr ($title, 0, 31);

$this->sWorksheetTitle = $title;

}

//增加行函数(关键函数)

private function addRow ($array)

{

$cells = ""; //设置每个单元为空

foreach ($array as $k => $v)

{

 $type = &#39;String&#39;; //默认类型是字符串

 if ($this->bConvertTypes === true && is_numeric($v)): //判断类型

 { $type = &#39;Number&#39;; }

 $v = htmlentities($v, ENT_COMPAT, $this->sEncoding);

 $cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";

}

 $this->lines[] = "<Row>\n" . $cells . "</Row>\n"; //写入数组

}

//增加数组

public function addArray ($array)

{

foreach ($array as $k => $v)

 {$this->addRow ($v);}

}

//导出xml

public function generateXML ($filename = &#39;excel-export&#39;)

{

$filename = preg_replace(&#39;/[^aA-zZ0-9\_\-]/&#39;, &#39;&#39;, $filename);

header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);

header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");

echo stripslashes (sprintf($this->header, $this->sEncoding));

echo "\n<Worksheet ss:Name=\"" . $this->sWorksheetTitle . "\">\n<Table>\n";

foreach ($this->lines as $line)

echo $line;

echo "</Table>\n</Worksheet>\n";

echo $this->footer;

}

}

로그인 후 복사

原理很简单,就是把数据数组,读出来,再用XML的标签封上,在用php自带的header()函数告诉游览器,就可以了。

调用:

1

2

3

4

5

6

7

8

9

10

11

12

13

public function import()

{

 $data = array(

 1 => array (&#39;学校名称&#39;,"队伍名称")

 );

 foreach($this->team as $key=>$value)

 {

  array_push($data,array($key, $value));

 }

 $xls = new Excel_XML(&#39;UTF-8&#39;, false, &#39;My Test Sheet&#39;); //实例化函数

 $xls->addArray($data);

 $xls->generateXML(&#39;school&#39;); //导出并设置名称

}

로그인 후 복사

上面是的写一个导出方式。在游览器运行就已经导出数组$this->team 里面的键和值了。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php实现博客,论坛图片防盗链的方法

PHP中字符与字节的区别及字符串与字节转换详解

PHP调用接口用post方法传送json数据

위 내용은 Excel 데이터 내보내기를 위한 클래스 라이브러리 사용의 PHP 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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