itul/slick-spreadsheets

电子表格工具,用于转换和读取

v1.0.6 2024-04-30 10:06 UTC

This package is auto-updated.

Last update: 2024-08-30 10:50:38 UTC


README

Latest Version on Packagist Total Downloads

Slick Spreadsheets 是一个工具,用于简化对结构化数据集文件(如 csv/xls/xlsx/html)的常见任务。此软件包允许您在格式之间转换,从文件中提取关联数组中的数据,并从数据数组创建文件。

安装

您可以通过 composer 安装此软件包

composer require itul/slick-spreadsheets

方法

生成/转换/下载文件

以下所有示例都将触发浏览器下载文件。

//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');

通用转换

所有通用转换选项(toArraytoXlstoCsvtoHtml)接受数组或可以读取为结构化数组的文件。

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');