<?php
// 数据导出 类文件 -- 作者 色色
/**
* 导出 XML格式的 Excel 数据
*/
class XmlExcelExport
{
/**
* 文档头标签
*
* @var string
*/
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\">";
/**
* 文档尾标签
*
* @var string
*/
private $footer = "</Workbook>";
/**
* 内容编码
* @var string
*/
private $sEncoding;
/**
* 是否转换特定字段值的类型
*
* @var boolean
*/
private $bConvertTypes;
/**
* 生成的Excel内工作簿的个数
*
* @var int
*/
private $dWorksheetCount = 0;
/**
* 构造函数
*
* 使用类型转换时要确保:页码和邮编号以'0'开头
*
* @param string $sEncoding 内容编码
* @param boolean $bConvertTypes 是否转换特定字段值的类型
*/
function __construct($sEncoding = 'UTF-8', $bConvertTypes = false)
{
$this->bConvertTypes = $bConvertTypes;
$this->sEncoding = $sEncoding;
}
/**
* 返回工作簿标题,最大 字符数为 31
*
* @param string $title 工作簿标题
* @return string
*/
function getWorksheetTitle($title = 'Table1')
{
$title = preg_replace("/[\\\|:|\/|\?|\*|\[|\]]/", "", empty($title) ? 'Table' . ($this->dWorksheetCount + 1) : $title);
return substr($title, 0, 31);
}
/**
* 向客户端发送Excel头信息
*
* @param string $filename 文件名称,不能是中文
*/
function generateXMLHeader($filename){
$filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
$filename = urlencode($filename);
// 中文名称使用urlencode编码后在IE中打开能保存成中文名称的文件,但是在FF上却是乱码
header("Pragma: public"); header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/vnd.ms-excel; charset={$this->sEncoding}");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename={$filename}.xls");
echo stripslashes(sprintf($this->header, $this->sEncoding));
}
/**
* 向客户端发送Excel结束标签
*
* @param string $filename 文件名称,不能是中文
*/
function generateXMLFoot(){
echo $this->footer;
}
/**
* 开启工作簿
*
* @param string $title
*/
function worksheetStart($title){
$this->dWorksheetCount ++;
echo "\n<Worksheet ss:Name=\"" . $this->getWorksheetTitle($title) . "\">\n<Table>\n";
}
/**
* 结束工作簿
*/
function worksheetEnd(){
echo "</Table>\n</Worksheet>\n";
}
/**
* 设置表头信息
*
* @param array $header
*/
function setTableHeader(array $header){
echo $this->_parseRow($header);
}
/**
* 设置表内行记录数据
*
* @param array $rows 多行记录
*/
function setTableRows(array $rows){
foreach ($rows as $row) echo $this->_parseRow($row);
}
/**
* 将传人的单行记录数组转换成 xml 标签形式
*
* @param array $array 单行记录数组
*/
private function _parseRow(array $row)
{
$cells = "";
foreach ($row as $k => $v){
$type = 'String';
if ($this->bConvertTypes === true && is_numeric($v))
$type = 'Number';
$v = htmlentities($v, ENT_COMPAT, $this->sEncoding);
$cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";
}
return "<Row>\n" . $cells . "</Row>\n";
}
}
经过测试在Excel2007 , 单工作簿支持 10w条 以上的数据....
对于大数据量的导出,一次取出全部数据不太现实,容易内存溢出,建议分段提取,每次 提取 200 条数据
此类配合 我之前发的 coredb 类 性能还好 哈哈哈
- 大小: 32.9 KB
分享到:
相关推荐
适合QT新手
"Java生成Excel图表" Java生成Excel图表是使用Java语言来生成Excel图表的过程。Excel图表是指使用Excel软件生成的图表,例如柱状图、折线图、饼状图等。Java语言可以使用各种库和框架来生成Excel图表,例如...
再者,`0407.xlsx`文件可能是项目的输入或输出示例,展示了如何在Excel中应用编程生成的艺术效果。可能包含了各种单元格颜色的设定,形成了一幅由数据构成的画作。 最后,"部署说明.txt"文件提供了运行项目所需的...
在本资源"Python源码自动办公-52 Excel-案例-用Excel画画.rar"中,主要探讨了如何利用Python编程语言来实现自动化处理Excel文件,特别是通过编程在Excel中进行艺术创作,即“用Excel画画”。这个案例展示了Python在...
首先,我们来看`excel-export-excel.js`这个库的核心功能。它允许开发者通过编写JavaScript代码将HTML表格(`<table>`元素)转换为Excel文件。这种转换通常涉及到以下步骤: 1. **解析HTML表格**:库会遍历HTML文档...
在本资源包“小程序微信登录--短信验证码--excel导出.rar”中,包含了实现微信小程序登录功能、短信验证码验证以及Excel数据导出的核心技术。这些功能对于构建具有用户注册、登录和数据管理的小程序至关重要。以下是...
例如,可以使用Content-Type头设置为"application/vnd.ms-excel",告知浏览器这是一个Excel文件。然后,通过输出包含Excel数据的字符串,如CSV格式,浏览器会将其解析为Excel文件并提供下载选项。 CSV(Comma ...
在.NET框架中生成Excel文件是常见的任务,尤其在数据导出、报表生成或者数据分析场景下。本文将深入探讨如何利用.NET技术,特别是C#或VB.NET语言,来创建Excel文件。我们将关注两种主要的方法:使用Microsoft Office...
本项目"golang实现的读取excel模板批量生成excel工具"正是基于这一需求而设计的,它允许用户通过读取一个Excel模板来快速创建多个类似的Excel文件。 首先,我们来看这个工具的核心技术点。在Go中,处理Excel文件...
本文将深入探讨基于PHP的Excel生成函数库,并以"基于PHP的-excel用于生成excel文档的函数库源码.zip"为例,解析其背后的原理和应用。 首先,我们需要了解的是,PHP中最常用的Excel生成库之一是PHPExcel。这个库允许...
接下来,让我们详细讲解如何创建一个简单的Excel文件: 1. 导入必要的模块: ```python import xlsxwriter ``` 2. 创建一个新的Excel工作簿对象: ```python workbook = xlsxwriter.Workbook('output.xlsx') ...
在本文中,我们将深入探讨如何使用Java POI库根据已有的Excel模板生成新的Excel文件。 首先,理解“模板”在Excel中的概念非常重要。模板通常包含预设的格式、样式、公式和数据结构,可以作为创建新文件的基础。在...
在IT行业中,生成Excel文件和将其打包成ZIP文件是一项常见的任务,特别是在数据处理、报表生成或文件传输等场景。这个任务通常涉及到编程语言中的文件操作和压缩库的使用。以下是对给定标题和描述中涉及知识点的详细...
生成excel并上传到S3.不需要真正的生成excel文件,只需要拿到byte
例如,创建一个简单的Excel表格的基本步骤如下: 1. 加载或创建`Workbook`对象: ```java Workbook workbook = new HSSFWorkbook(); // 对于.xls文件 Workbook workbook = new XSSFWorkbook(); // 对于.xlsx文件 ``...
在Java开发中,Apache POI库是一个...总的来说,Apache POI库为Java开发者提供了一个强大的工具,使得与Excel文件的交互变得简单而高效。只要理解并熟练运用上述知识点,你就能在Java项目中轻松生成和操作Excel文档。
在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成非常有用。 1. **Apache POI介绍** Apache POI是一个开源项目,提供了API来处理Microsoft Office格式的文件。在Java...
Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件
Python 自动办公- 在Excel中按条件筛选数据并存入新的表 Python源码Python 自动办公- 在Excel中按条件筛选数据并存入新的表 Python源码Python 自动办公- 在Excel中按条件筛选数据并存入新的表 Python源码Python 自动...
通过这个功能,管理员可以将大量数据快速导出,用于离线分析、报表生成,或者与不支持直接数据库连接的其他应用程序进行数据交换。导出过程中,用户可能还可以选择数据筛选、排序、格式化等选项,以满足不同的需求。...