itul / slick-spreadsheets
电子表格工具,用于转换和读取
v1.0.6
2024-04-30 10:06 UTC
Requires
- php: >=7.2
- barryvdh/laravel-dompdf: >=2.1
- itul/functions: >=1.0
- phpoffice/phpspreadsheet: >=2.0
README
Slick Spreadsheets 是一个工具,用于简化对结构化数据集文件(如 csv/xls/xlsx/html)的常见任务。此软件包允许您在格式之间转换,从文件中提取关联数组中的数据,并从数据数组创建文件。
安装
您可以通过 composer 安装此软件包
composer require itul/slick-spreadsheets
方法
- generate
- 通用转换
- 转换为 XLSX
- 转换为 Csv
- 转换为 Html
- 转换为 PDF
生成/转换/下载文件
以下所有示例都将触发浏览器下载文件。
//GENERATE CSV FROM AN ARRAY
\SlickSpreadsheets::generate($array, '/path/to/output.csv');
//GENERATE XLSX FROM AN ARRAY
\SlickSpreadsheets::generate($array, '/path/to/output.xlsx');
//CONVERT CSV TO XLSX
\SlickSpreadsheets::generate('/path/to/example.csv', '/path/to/output.xlsx');
//CONVERT XLSX TO CSV
\SlickSpreadsheets::generate('/path/to/example.xlsx', '/path/to/output.csv');
通用转换
所有通用转换选项(toArray
、toXls
、toCsv
、toHtml
)接受数组或可以读取为结构化数组的文件。
toArray
toArray 方法接受一个文件路径以将其转换为数组。
如果提供的参数只是 html,则此软件包将尝试将 html 表格转换为数组。
读取文件到数组示例
//CONVERT A CSV INTO A PHP ARRAY
$data = \SlickSpreadsheets::toArray('/path/to/file.csv');
//CONVERT A XLSX INTO A PHP ARRAY
$data = \SlickSpreadsheets::toArray('/path/to/file.xlsx');
当您不在 Laravel 中使用此软件包时,您需要显式调用完全限定的软件包,并在使用此软件包中任何可用的方法之前运行 init
静态方法。
$data = \Itul\SlickSpreadsheets\SlickSpreadsheets::init()->toArray('/path/to/file.csv');
示例
CSV 转换为数组
//CSV To array example
$data = \SlickSpreadsheets::toArray('/path/to/file.csv');
XLS 转换为数组
此方法可以接受 .xls 和 .xslx 文件。
//XLS To array example
//EACH SHEET IN THE SPREADSHEET WILL BE RETURNED IN THE DATA ARRAY
$data = \SlickSpreadsheets::toArray('/path/to/file.xlsx');
HTML 转换为数组
此方法可以接受 .htm 和 .html 文件或原始 html。
//HTML To array example
$data = \SlickSpreadsheets::toArray('/path/to/file.hml');
//HTML string To array example
$data = \SlickSpreadsheets::toArray('
<table>
<thead>
<th>header1</th>
<th>header2</th>
<th>header3</th>
</thead>
<tbody>
<tr>
<td>row 1 col 1</td>
<td>row 1 col 2</td>
<td>row 1 col 3</td>
</tr>
<tr>
<td>row 2 col 1</td>
<td>row 2 col 2</td>
<td>row 2 col 3</td>
</tr>
<tr>
<td>row 3 col 1</td>
<td>row 3 col 2</td>
<td>row 3 col 3</td>
</tr>
</tbody>
</table>
');
toCsv
此方法可以从 array
、.xls
、.xlsx
、.htm
、.html
、'(string)html'
转换为 .csv
。
//CONVERT ARRAY TO CSV
$csvFile = \SlickSpreadsheets::toCsv(array $array);
//CONVERT XLS/XLSX TO CSV
$csvFile = \SlickSpreadsheets::toCsv('/path/to/source/file.xlsx');
//CONVERT HTML/HTM TO CSV
$csvFile = \SlickSpreadsheets::toCsv('/path/to/source/file.html');
//CONVERT HTML string to CSV
$csvFile = \SlickSpreadsheets::toCsv(`'<table>...</table>'`);
toXls
此方法可以从 array/htm/html/html 字符串/csv 转换为 .xlsx。
//CONVERT ARRAY TO CSV
$csvFile = \SlickSpreadsheets::toCsv(array $array);
//CONVERT XLS/XLSX TO CSV
$csvFile = \SlickSpreadsheets::toCsv('/path/to/source/file.xlsx');
//CONVERT HTML/HTM TO CSV
$csvFile = \SlickSpreadsheets::toCsv('/path/to/source/file.html');
//CONVERT HTML string to CSV
$csvFile = \SlickSpreadsheets::toCsv(`'<table>...</table>'`);
toHtml
以下所有示例都将返回 $html
作为 string
。
//CONVERT ARRAY TO HTML
$html = \SlickSpreadsheets::toHtml(array $array);
//CONVERT CSV to HTML
$html = \SlickSpreadsheets::toCsv('/path/to/source/file.csv');
//CONVERT XLS/XLSX TO HTML
$html = \SlickSpreadsheets::html('/path/to/source/file.xlsx');
转换为 XLSX
将数组转换为 XLSX
$filePath = \SlickSpreadsheets::arrayToXls($data);
将 CSV 转换为 XLSX
$filePath = \SlickSpreadhseets::csvToXls('/path/to/file.csv');
将 HTML 转换为 XLSX
//PASS A HTML TABLE STRING
$filePath = \SlickSpreadhseets::htmlToXls($html);
转换为 CSV
将数组转换为 CSV
$filePath = \SlickSpreadsheets::arrayToCsv($data);
将 XLSX 转换为 CSV
//WILL RETURN AN ARRAY OF CSV FILE PATHS WITH A KEY NAME THAT MATCHES THE SHEET NAME
//FILE CAN BE .xls OR .xslx
$filePaths = \SlickSpreadhseets::xlsToCsv('/path/to/file.xlsx');
将 HTML 转换为 CSV
//PASS A HTML TABLE STRING
$filePath = \SlickSpreadhseets::htmlToCsv($html);
转换为 HTML
将数组转换为 HTML
//RETURNS THE HTML AS A STRING
$html = \SlickSpreadhseets::arrayToHtml($data);
将 CSV 转换为 HTML
//RETURNS THE HTML AS A STRING
$html = \SlickSpreadhseets::csvToHtml('/path/to/file.csv');
将 XLSX 转换为 HTML
//RETURNS THE HTML AS A STRING
//FILE CAN BE .xls OR .xlsx
$html = \SlickSpreadhseets::xlsToHtml('/path/to/file.xlsx');
转换为 PDF
将 CSV 转换为 PDF
$filePath = \SlickSpreadsheet::csvToPdf('/path/to/file.csv');
将 XLSX 转换为 PDF
//FILE CAN BE .xls or .xlsx
$filePath = \SlickSpreadsheet::xlsToPdf('/path/to/file.xlsx');