Home Backend Development PHP Tutorial PHP# Some strategies for exporting data to Excel

PHP# Some strategies for exporting data to Excel

Aug 08, 2016 am 09:30 AM
array excel gt

PHP#dataExcelSome strategies for exporting

Export is actually more common in any type of back-end system. Under normal circumstances, the data exported by excel should be used more Make backups and drafts. Ideally, any business operation on business data should not rely on exporting data from the back-end business system and then manually interfering with it, but the reality is very skinny. . .

Functions such as data export need to be encapsulated if possible. There is only one data export, and its value will truly be reflected in subsequent adjustments and changes to business rules. When a typical application system has various data export requirements, it means that the business analysis of this application system is not good enough or very poor. When users only want to use the application system to export data to assist their business processes, the most terrifying situation is The distance between the user and the database will be just an export button. . .

Environment

1.PHP5.5.14 (cli) (built: Sep 9 201419:09:25)

2.PHP Excel 1.7.8 (http://www.codeplex.com/PHPExcel)

Processing logic

In fact, the key point of this type of problem is how to define the export rules. Whether this set of rules can adapt to business processes, the most basic way is to abstract the data export process into 3 basic stages, and then each stage can be gradually refined:

1. Definition of export rules

2.Adaptation of business data and export rules

3.Export rule analysis structureExcel

Example

This example implements the basic export function. There is no encapsulation, no focus on performance or other scalability issues.

<?php
namespace org\ybygjy\comp\excel;

/**
 * Excel组件封装
 * <p>1.统一处理工程中针对excel的数据导出</p>
 * @author WangYanCheng
 * @version 2015-1-22
 */
class ExcelComp {
	/**
	 * 构造函数
	 */
	public function __construct() {
		require_once 'org/ybygjy/library/excel/PHPExcel.php';
	}
	/**
	 * 测试入口
	 */
	public function doTest() {
		//构造原始数据
		$dataArray = $this->buildData();
		//导出
		$this->doExportData($dataArray);
	}
	/**
	 * 解析传递的原始数据并导出
	 * @param $dataArr
	 */
	public function doExportData($dataArr) {
		$phpObjExcel = new \PHPExcel();
		$worksSheet = $phpObjExcel->setActiveSheetIndex(0);
		//构造表头数据_Begin
		$tmpColTitles = [];
		$firstDataEntry = $dataArr[0];
		//分配列索引
		$colIndex = 0;
		foreach($firstDataEntry as $key => $val) {
			if (preg_match('/^_/', $key)) {
				continue;
			}
			if (is_array($val)) {
				//取array下的列名称
				$val = $val[0];
				$rowNums = count($val);
				foreach ($val as $innerKey => $innerValue) {
					$tmpColTitles[] = array(
						'parentKey' => $key,
						'key' => $innerKey,
						'colIndex' => $colIndex
					);
					$colIndex++;
				}
			} else {
				$tmpColTitles[] = array(
					'key'=>$key,
					'colIndex'=>$colIndex
				);
				$colIndex++;
			}
		}
		for($i = 0; $i < count($tmpColTitles); $i++) {
			$tmpObj = $tmpColTitles[$i];
			$key = $tmpObj[&#39;key&#39;];
			$colIndex = $tmpObj[&#39;colIndex&#39;];
			$worksSheet->setCellValueByColumnAndRow($colIndex,1,$key);	
		}
		//构造表头数据_End
		//填充单元格数据
		$currRow = 2;
		foreach ($dataArr as $dataEntry) {
			$mergeRow = $dataEntry['_DIMENSION'];
			foreach ($tmpColTitles as $colEntry) {
				$key = $colEntry['key'];
				$colIndex = $colEntry['colIndex'];
				$parentKey = (isset($colEntry['parentKey']) ? $colEntry['parentKey'] : null);
				if (empty($parentKey)) {
					$value = $dataEntry[$key];
					if ($mergeRow == 1) {
						$worksSheet->setCellValueByColumnAndRow($colIndex, $currRow, $value);
					} else {
						$worksSheet->mergeCellsByColumnAndRow($colIndex, $currRow, $colIndex, ($currRow + $mergeRow - 1))->setCellValueByColumnAndRow($colIndex, $currRow, $value);
					}
				} else {
					$tmpDataArr = $dataEntry[$parentKey];
					$innerRow = $currRow;
					for($index = 0; $index < count($tmpDataArr); $index++) {
						$innerDataEntry = $tmpDataArr[$index];
						$value = $innerDataEntry[$key];
						$worksSheet->setCellValueByColumnAndRow($colIndex, $innerRow, $value);
						$innerRow++;
					}
				}
			}
			$currRow += $mergeRow;
		}
		header('Content-Type: application/vnd.ms-excel');
		header('Content-Type: application/force-download');
		header('Content-Type: application/octet-stream');
		header('Content-Type: application/download');
		header('Content-Disposition: attachment;filename="HelloWord.xls"');
		header('Cache-Control: max-age=0');
		header('Cache-Control: max-age=1');
		header('Cache-Control: no-cache, must-revalidate');
		header('Pragma: public');
		$objWriter = \PHPExcel_IOFactory::createWriter($phpObjExcel, 'Excel5');
		$objWriter->save('php://output');
	}
	/**
	 * 构造测试数据
	 * @return multitype:multitype:string number multitype:multitype:string
	 */
	private function buildData() {
		$rtnData = array(
			array(
				'name'=>'YanCheng_01',
				'age'=>'20',
				'addr'=>array(
					array(
						'country'=>'China',
						'province'=>'ShanDong'
					),
					array(
						'country'=>'China',
						'province'=>'BeiJing'
					)
				),
				'_DIMENSION'=>2
			),
			array(
				'name'=>'YanCheng_02',
				'age'=>'21',
				'addr'=>array(
					array(
						'country'=>'China',
						'province'=>'LanZhou'
					),
					array(
						'country'=>'China',
						'province'=>'NingXia'
					)
				),
				'_DIMENSION'=>2
			),
			array(
				'name'=>'YanCheng_03',
				'age'=>'22',
				'addr'=>array(
					array(
						'country'=>'China',
						'province'=>'JiaYuGuan'
					)
				),
				'_DIMENSION'=>1
			)
		);
		return $rtnData;
	}
}
Copy after login

The above introduces some strategies for PHP# data Excel export, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What should I do if the frame line disappears when printing in Excel? What should I do if the frame line disappears when printing in Excel? Mar 21, 2024 am 09:50 AM

If when opening a file that needs to be printed, we will find that the table frame line has disappeared for some reason in the print preview. When encountering such a situation, we must deal with it in time. If this also appears in your print file If you have questions like this, then join the editor to learn the following course: What should I do if the frame line disappears when printing a table in Excel? 1. Open a file that needs to be printed, as shown in the figure below. 2. Select all required content areas, as shown in the figure below. 3. Right-click the mouse and select the &quot;Format Cells&quot; option, as shown in the figure below. 4. Click the “Border” option at the top of the window, as shown in the figure below. 5. Select the thin solid line pattern in the line style on the left, as shown in the figure below. 6. Select &quot;Outer Border&quot;

How to filter more than 3 keywords at the same time in excel How to filter more than 3 keywords at the same time in excel Mar 21, 2024 pm 03:16 PM

Excel is often used to process data in daily office work, and it is often necessary to use the &quot;filter&quot; function. When we choose to perform &quot;filtering&quot; in Excel, we can only filter up to two conditions for the same column. So, do you know how to filter more than 3 keywords at the same time in Excel? Next, let me demonstrate it to you. The first method is to gradually add the conditions to the filter. If you want to filter out three qualifying details at the same time, you first need to filter out one of them step by step. At the beginning, you can first filter out employees with the surname &quot;Wang&quot; based on the conditions. Then click [OK], and then check [Add current selection to filter] in the filter results. The steps are as follows. Similarly, perform filtering separately again

How to change excel table compatibility mode to normal mode How to change excel table compatibility mode to normal mode Mar 20, 2024 pm 08:01 PM

In our daily work and study, we copy Excel files from others, open them to add content or re-edit them, and then save them. Sometimes a compatibility check dialog box will appear, which is very troublesome. I don’t know Excel software. , can it be changed to normal mode? So below, the editor will bring you detailed steps to solve this problem, let us learn together. Finally, be sure to remember to save it. 1. Open a worksheet and display an additional compatibility mode in the name of the worksheet, as shown in the figure. 2. In this worksheet, after modifying the content and saving it, the dialog box of the compatibility checker always pops up. It is very troublesome to see this page, as shown in the figure. 3. Click the Office button, click Save As, and then

How to type subscript in excel How to type subscript in excel Mar 20, 2024 am 11:31 AM

eWe often use Excel to make some data tables and the like. Sometimes when entering parameter values, we need to superscript or subscript a certain number. For example, mathematical formulas are often used. So how do you type the subscript in Excel? ?Let’s take a look at the detailed steps: 1. Superscript method: 1. First, enter a3 (3 is superscript) in Excel. 2. Select the number &quot;3&quot;, right-click and select &quot;Format Cells&quot;. 3. Click &quot;Superscript&quot; and then &quot;OK&quot;. 4. Look, the effect is like this. 2. Subscript method: 1. Similar to the superscript setting method, enter &quot;ln310&quot; (3 is the subscript) in the cell, select the number &quot;3&quot;, right-click and select &quot;Format Cells&quot;. 2. Check &quot;Subscript&quot; and click &quot;OK&quot;

How to set superscript in excel How to set superscript in excel Mar 20, 2024 pm 04:30 PM

When processing data, sometimes we encounter data that contains various symbols such as multiples, temperatures, etc. Do you know how to set superscripts in Excel? When we use Excel to process data, if we do not set superscripts, it will make it more troublesome to enter a lot of our data. Today, the editor will bring you the specific setting method of excel superscript. 1. First, let us open the Microsoft Office Excel document on the desktop and select the text that needs to be modified into superscript, as shown in the figure. 2. Then, right-click and select the &quot;Format Cells&quot; option in the menu that appears after clicking, as shown in the figure. 3. Next, in the “Format Cells” dialog box that pops up automatically

How to use the iif function in excel How to use the iif function in excel Mar 20, 2024 pm 06:10 PM

Most users use Excel to process table data. In fact, Excel also has a VBA program. Apart from experts, not many users have used this function. The iif function is often used when writing in VBA. It is actually the same as if The functions of the functions are similar. Let me introduce to you the usage of the iif function. There are iif functions in SQL statements and VBA code in Excel. The iif function is similar to the IF function in the excel worksheet. It performs true and false value judgment and returns different results based on the logically calculated true and false values. IF function usage is (condition, yes, no). IF statement and IIF function in VBA. The former IF statement is a control statement that can execute different statements according to conditions. The latter

Where to set excel reading mode Where to set excel reading mode Mar 21, 2024 am 08:40 AM

In the study of software, we are accustomed to using excel, not only because it is convenient, but also because it can meet a variety of formats needed in actual work, and excel is very flexible to use, and there is a mode that is convenient for reading. Today I brought For everyone: where to set the excel reading mode. 1. Turn on the computer, then open the Excel application and find the target data. 2. There are two ways to set the reading mode in Excel. The first one: In Excel, there are a large number of convenient processing methods distributed in the Excel layout. In the lower right corner of Excel, there is a shortcut to set the reading mode. Find the pattern of the cross mark and click it to enter the reading mode. There is a small three-dimensional mark on the right side of the cross mark.

How to insert excel icons into PPT slides How to insert excel icons into PPT slides Mar 26, 2024 pm 05:40 PM

1. Open the PPT and turn the page to the page where you need to insert the excel icon. Click the Insert tab. 2. Click [Object]. 3. The following dialog box will pop up. 4. Click [Create from file] and click [Browse]. 5. Select the excel table to be inserted. 6. Click OK and the following page will pop up. 7. Check [Show as icon]. 8. Click OK.

See all articles