Download the PHP package wj/excel without Composer

On this page you can find all versions of the php package wj/excel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package excel

导入文件

要导入一个文件,使用:->load($filename)。配置可选。

Excel::load('file.xls', function($reader) {

// reader methods

});

处理导入结果

得到所有表和行

加载一个文件后,用->get()像这样得到结果:

Excel::load('file.xls', function($reader) {

})->get();

或者

Excel::load('file.xls', function($reader) {

// Getting all results
$results = $reader->get();

// ->all() is a wrapper for ->get() and will work the same
$results = $reader->all();

});

根据文件的数量而定,->get() 和 ->all()将返回表或者行集合,可以在import.php里面设置'force_sheets_collection'为true禁用这个功能。当设置为true时将总是返回一个表集合。

表头属性

默认excel文件第一行用作表头属性。

// Get the firstname $row->firstname;

注:默认情况下,这些属性将被转换为一个段塞,在excel::import.heading里可以改变默认内容,可选值有:true|false|slugged|ascii|numeric|hashed|trans|original。当excel::import.to_ascii设置为true时,True 和 slugged 将转换为 ASCII,可以更改默认分隔符以及内部配置。

集合

表,行和单元格都是集合,意味着之后可以跟->get(),能使用所有集合默认的方法。

// E.g. group the results $reader->get()->groupBy('firstname');

获得第一个表或者第一行

要获得第一个表或者第一行,可以用->first()。

$reader->first();

注:根据设置'force_sheets_collection'的不同,将返回第一行或者第一个表。

工作薄和表的标题

用->getTitle()检索工作薄和表的标题。

// Get workbook title $workbookTitle = $reader->getTitle();

foreach($reader as $sheet) { // get sheet title $sheetTitle = $sheet->getTitle(); }

限制结果

抓取行

当你只想返回一个表里的X行时,用->take() 或者 ->limit()。

// You can either use ->take() $reader->take(10);

// Or ->limit() $reader->limit(10);

跳过行

当你想跳过一定数量的行,可以用->skip() 或者 ->limit(false, 10)。

// Skip 10 results $reader->skip(10);

// Skip 10 results with limit, but return all other rows $reader->limit(false, 10);

// Skip and take $reader->skip(10)->take(10);

// Limit with skip and take $reader->($skip, $take);

修改结果

当你想返回一个数组而不是一个对象时,可以用->toArray()。

$reader->toArray();

当你想返回一个对象,可以选择(代替get() 或者 all())用->toObject()。

$reader->toObject();

显示结果

可以将结果转储到可读输出,使用->dump() 或者 ->dd()。

// Dump the results $reader->dump();

// Dump results and die $reader->dd();

迭代结果

可以用->each()迭代结果。

// Loop through all sheets $reader->each(function($sheet) {

// Loop through all rows
$sheet->each(function($row) {

});

});

另外,也可以用foreach迭代结果。

选择表和列

选择一个指定表

如果你想选择单个表,可以用->selectSheets($name),仅仅这个表被载入。

Excel::selectSheets('sheet1')->load();

选择多个表

如果你想选择文件里的多个表,通过在参数里传入一个数组。

Excel::selectSheets('sheet1', 'sheet2')->load();

用索引选择表

// First sheet Excel::selectSheetsByIndex(0)->load();

// First and second sheet Excel::selectSheetsByIndex(0, 1)->load();

选择列

如果只想选择一部分列,可以用->select($columns)或者传入一个数组到->get($columns)的第一个参数。

// Select $reader->select(array('firstname', 'lastname'))->get();

// Or $reader->get(array('firstname', 'lastname'));

全部 get 方法 (像 all(), first(), dump(), toArray(), ...)接受一个列的数组。

日期

日期默认被解析为一个Carbon object,可以在import.php里设置dates.enabled 为 false禁用日期格式化编译。

启用/禁用单一导入的日期格式,用->formatDates($boolean, $format)

// Format the dates $reader->formatDates(true);

// Disable date formatting $reader->formatDates(false);

// Format dates + set date format $reader->formatDates(true, 'Y-m-d');

格式化日期

默认状态日期不格式化,但返回一个Carbon对象,这里有一些选项格式化他们。

在->get()后格式化结果

在循环中,你可以利用Carbon方法->format($dateFormat)

$rows->each(function($row) {

$created_at = $row->created_at->format('Y-m-d');

});

设置一个默认日期格式

$reader->setDateFormat('Y-m-d');

设置自定义日期列

没有日期格式的单元格将不被解析为日期。强迫这种行为(或者用CSV导入)您可以手动设置这些日期列:->setDateColumns()

$reader->setDateColumns(array( 'created_at', 'deleted_at' ))->get();

计算公式

默认文件里的公式将被计算且返回结果,在import.php里设置calculate改变默认行为以达到理想状态。

如果您想启用/禁用它为一个单一的导入,可以用->calculate($boolean)

// Enable calculation $reader->calculate();

// Disable calculation $reader->calculate(false);

自定认格式化值

默认 Excel使用PHPExcel的默认值来智能格式化的单元格值。你可以重写以取代这种行为的粘合,以满足特定需求。值粘合必须有PHPExcel_Cell_IValueBinder和一个bindValue方法。也可以扩展PHPExcel_Cell_DefaultValueBinder返回默认行为。

use PHPExcel_Cell; use PHPExcel_Cell_DataType; use PHPExcel_Cell_IValueBinder; use PHPExcel_Cell_DefaultValueBinder;

class MyValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder { public function bindValue(PHPExcel_Cell $cell, $value = null) { if (is_numeric($value)) { $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC);

        return true;
    }

    // else return default behavior
    return parent::bindValue($cell, $value);
}

}

$myValueBinder = new MyValueBinder;

Excel::setValueBinder($myValueBinder)->load('file.xls', function($reader) {

// reader methods

});

PHPExcel_Cell_DataType 可用 TYPE_STRING, TYPE_FORMULA, TYPE_NUMERIC, TYPE_BOOL, TYPE_NULL, TYPE_INLINE 和 TYPE_ERROR。

重置默认的值或者调用Laravel Excel前设置一个自定义粘合,需要调用resetValueBinder方法。

1

Excel::resetValueBinder();

缓存和单元格缓存

单元格缓存

可以配置cache.php开启单元格缓存,可以在两个动动之间选择和设置,默认开启memory驱动。

记住结果

可以用->remember($minutes)记住结果,下次载入相同的文件(如果它仍然在缓存里),将返回缓存结果。

// Remember for 10 minutes $results = $reader->remember(10)->get();

导入块

处理大文件时,最好导入一大块数据,可以用filter('chunk')开启,要导入块可以用chunk($size, $callback)代替正常的get()。第一个参数是块的尺寸,第二个参数是一个闭包将返回结果。

Excel::filter('chunk')->load('file.csv')->chunk(250, function($results) { foreach($results as $row) { // do stuff } });

批量导入

导入一个文件夹

要导入整个文件夹(仅仅xls, xlsx 和 csv文件会被导入),第一个参数设置为文件夹。

Excel::batch('app/storage/uploads', function($rows, $file) {

// Explain the reader how it should interpret each row,
// for every file inside the batch
$rows->each(function($row) {

    // Example: dump the firstname
    dd($row->firstname);

});

});

导入多个文件

也可以通过指定一个文件数组导入。

$files = array( 'file1.xls', 'file2.xls' );

Excel::batch($files, function($rows, $file) {

});

导入一个文件夹和多个表

当文件包含多个表,还应该循环表

Excel::batch('app/storage/uploads', function($sheets, $file) {

$sheets->each(function($sheet) {

});

});

导入设置

当使用高组Excel文件(如,没有任何表头列),这些导入可能比较复杂,->byConfig()将帮助你处理这些问题。

在excel::import.sheets里设置的例子:

Excel::load('file.xls')->byConfig('excel::import.sheets', function($sheet) {

// The firstname getter will correspond with a cell coordinate set inside the config
$firstname = $sheet->firstname;

});

注意:如果你用多个表,->byConfig将循环通过所有表,如果getters仅存在其中一个表,可以一直用->selectSheets()。

编辑现有文件

你可以编辑现有Excel文件,载入然后改性导出它们。

Excel::load('file.csv', function($file) {

// modify stuff

})->export('csv');

转换

从一个文件类型转换到另一个文件类型用->convert()

Excel::load('file.csv', function($file) {

// modify stuff

})->convert('xls');

其他

禁止使用第一行作为集合属性

默认用文件的第一行作为表头(因此,作为集合的属性名称),可以通过import.php里的import.heading改变。

在单个导入里用->noHeading()

$reader->noHeading();

设置单元格名称分隔符

通过在第一行列中查找默认集合属性名称,分隔翻译为:_。

例如:Created at -> created_at

改变import.php里的'separator'改变默认行为,或者可以用->setSeparator($separator)。

$reader->setSeparator('-');

忽略空单元格

默认没有忽略空单元格,作为空的单元格集合

要改变这个默认行为,改变import.php里的'ignoreEmpty'或者用->ignoreEmpty()。

$reader->ignoreEmpty();

输入编码

在import.php里设置改变输入编码,大多数情况下UTF-8是最好的选择,当然如果你要确认输出结果是和HTML页面原编码是一致的。 可以在->load()里传入输入编码

// When utilising a closure, you can pass the input encoding as third parameter. Excel::load('filename.csv', function($reader) {

}, 'UTF-8');

// or without a closure, you can use it as second parameter. Excel::load('filename.csv', 'UTF-8');

CSV设置

在csv.php文件里,可以修改默认设置,像delimiter, enclosure 和 line_ending。

##############################################################################

简单导出Excel

基础

用create方法设置第一个参数是文件名可以创建一个新文件。

Excel::create('Filename');

要操作创建的文件可以用回调函数。

Excel::create('Filename', function($excel) {

// Call writer methods here

});

改变属性

一些属性可以在内置闭包里改变,大多数值是默认设置的,查看 app/config/packages/maatwebsite/excel/config.php。

Excel::create('Filename', function($excel) {

// Set the title
$excel->setTitle('Our new awesome title');

// Chain the setters
$excel->setCreator('Maatwebsite')
      ->setCompany('Maatwebsite');

// Call them separately
$excel->setDescription('A demonstration to change the file properties');

});

自己去参考指南看到可用属性的列表。

导出

下载生成的文件,用->export($ext) 或者 ->download($ext)

导出Excel5 (xls)

Excel::create('Filename', function($excel) {

})->export('xls');

// or ->download('xls');

导出Excel2007 (xlsx)

->export('xlsx');

// or ->download('xlsx');

导出CSV

->export('csv');

// or ->download('csv');

可以在配置里设置默认外壳和分隔符。

导出PDF

要导出PDF,要在composer.json里包含"dompdf/dompdf": "~0.6.1", "mpdf/mpdf": "~5.7.3" 或者 "tecnick.com/tcpdf": "~6.0.0",修改export.pdf.driver相应的设置。

1

->export('pdf');

新Excel文件注入

自Laravel 5.0后这是个新颖的表单请求注入,这里介绍新Excel文件注入。

新Excel文件类

这个新Excel文件是一个新的Excel文件,在getFilename()里可以声明想要的文件名。

class UserListExport extends \Maatwebsite\Excel\Files\NewExcelFile {

public function getFilename()
{
    return 'filename';
}

}

使用

可以在__constructor或者方法里注入新Excel文件(使用Laravel 5.0),如这个控制器:

class ExampleController extends Controller {

public function exportUserList(UserListExport $export)
{
    // work on the export
    return $export->sheet('sheetName', function($sheet)
    {

    })->export('xls');
}

}

导出处理

要完全从控制器解耦Excel导出代码,可以用导出处理,

class ExampleController extends Controller {

public function exportUserList(UserListExport $export)
{
    // Handle the export
    $export->handleExport();
}

}

handleExport()方法会动态调用一个处理类,当类名添加Handler时:

class UserListExportHandler implements \Maatwebsite\Excel\Files\ExportHandler {

public function handle(UserListExport $export)
{
    // work on the export
    return $export->sheet('sheetName', function($sheet)
    {

    })->export('xls');
}

}

数据集在服务器

用服务器的数据集生成文件,使用 ->store($ext, $path = false, $returnInfo = false) 或者 ->save()。

正常导出到默认存储路径

默认文件会存储到app/storage/exports文件夹,定义在export.php配置文件。

Excel::create('Filename', function($excel) {

// Set sheets

})->store('xls');

正常导出到自定义存储路径

如果想使用自定义存储路径(例如每个客户单独的文件),可以在第二个参数设置文件夹,

1

->store('xls', storage_path('excel/exports'));

存储和导出

1

->store('xls')->export('xls');

存储和返回存储信息

如果想返回存储信息,设置第三个参数为true,或者在配置export.php里改变。

1

->store('xls', false, true);

Key 解释
full 完整路径和文件名
path 不包含文件名的路径
file 文件名
title 文件标题
ext 文件扩展名

确保存储文件夹可写。

生成一个表

在我们新创建的文件里生成一个表,用->sheet('Sheetname')。

Excel::create('Filename', function($excel) {

$excel->sheet('Sheetname', function($sheet) {

    // Sheet manipulation

});

})->export('xls');

生成多个表

要在文件里设置多个表。

Excel::create('Filename', function($excel) {

// Our first sheet
$excel->sheet('First sheet', function($sheet) {

});

// Our second sheet
$excel->sheet('Second sheet', function($sheet) {

});

})->export('xls');

修改属性

里面有几个属性我们可以改变,他们中的大多数有默认的配置值。查看 app/config/packages/maatwebsite/excel/config.php。

Excel::create('Filename', function($excel) {

$excel->sheet('Sheetname', function($sheet) {

    $sheet->setOrientation('landscape');

});

})->export('xls');

自己去参考指南看到可用属性的列表。

默认页边距

可以设置默认页面边缘内的配置文件excel::export.sheets。它接受布尔、单值或数组。

可以使用手动设置页面:->setPageMargin()

// Set top, right, bottom, left $sheet->setPageMargin(array( 0.25, 0.30, 0.25, 0.30 ));

// Set all margins $sheet->setPageMargin(0.25);

密码保护表

表可以用$sheet->protect()设置密码保护:

// Default protect $sheet->protect('password');

// Advanced protect $sheet->protect('password', function(\PHPExcel_Worksheet_Protection $protection) { $protection->setSort(true); });

从一个数组生成表

数组

从一个数组生成新文件用:->fromArray($source, $nullValue, $startCell, $strictNullComparison, $headingGeneration)表内闭包:

Excel::create('Filename', function($excel) {

$excel->sheet('Sheetname', function($sheet) {

    $sheet->fromArray(array(
        array('data1', 'data2'),
        array('data3', 'data4')
    ));

});

})->export('xls');

另外可以用:->with()

$sheet->with(array( array('data1', 'data2'), array('data3', 'data4') ));

如果想传递属性到闭包,用use($data)

$data = array( array('data1', 'data2'), array('data3', 'data4') );

Excel::create('Filename', function($excel) use($data) {

$excel->sheet('Sheetname', function($sheet) use($data) {

    $sheet->fromArray($data);

});

})->export('xls');

空比较

默认0显示为空单元格,如果要改变,传递true到第4个参数:

// Will show 0 as 0 $sheet->fromArray($data, null, 'A1', true);

要改变默认行为,可以用excel::export.sheets.strictNullComparison设置。

Eloquent模型 它也可以传递一个Eloquent模型且导出用->fromModel($model)。与fromArray方法一样接受相同的参数。

自动生成表头

默认导出用数组的键(或者模型属性名)作为第一行(表头列)。要改变可以编辑默认配置(excel::export.generate_heading_by_indices)或者传递false到第5个参数。

// Won't auto generate heading columns $sheet->fromArray($data, null, 'A1', false, false);

处理(操作)行

处理部分行

改变单元格值

// Manipulate first row $sheet->row(1, array( 'test1', 'test2' ));

// Manipulate 2nd row $sheet->row(2, array( 'test3', 'test4' ));

处理一行单元格

// 设置黑色背景 $sheet->row(1, function($row) {

// 设用单元格处理方法
$row->setBackground('#000000');

});

插入行

// 在第2行后插入 $sheet->appendRow(2, array( 'appended', 'appended' ));

// 插入最后 $sheet->appendRow(array( 'appended', 'appended' ));

添加一行

// 添加到第1行前 $sheet->prependRow(1, array( 'prepended', 'prepended' ));

// 添加到最前面 $sheet->prependRow(array( 'prepended', 'prepended' ));

添加多行

// 添加多行 $sheet->rows(array( array('test1', 'test2'), array('test3', 'test4') ));

// 添加多行 $sheet->rows(array( array('test5', 'test6'), array('test7', 'test8') ));

处理(操作)单元格

$sheet->cell('A1', function($cell) {

// manipulate the cell

});

$sheet->cells('A1:A5', function($cells) {

// manipulate the range of cells

});

设置背景

改变单元格背景用:->setBackground($color, $type, $colorType)

// 设置黑色背景 $cells->setBackground('#000000');

改变字体 / Set with font color $cells->setFontColor('#ffffff');

// Set font family $cells->setFontFamily('Calibri');

// Set font size $cells->setFontSize(16);

// Set font weight to bold $cells->setFontWeight('bold');

// Set font $cells->setFont(array( 'family' => 'Calibri', 'size' => '16', 'bold' => true ));

设置边框

// Set all borders (top, right, bottom, left) $cells->setBorder('solid', 'none', 'none', 'solid');

// Set borders with array $cells->setBorder(array( 'borders' => array( 'top' => array( 'style' => 'solid' ), ) ));

设置水平对齐

// Set alignment to center $cells->setAlignment('center');

设置垂直对齐

// Set vertical alignment to middle $cells->setValignment('middle');

表格样式

如果你想要改变的一般样式表(不是特定的单元格或范围),用->setStyle()方法:

// Set font with ->setStyle()` $sheet->setStyle(array( 'font' => array( 'name' => 'Calibri', 'size' => 15, 'bold' => true ) ));

字体

要改变当前表的字体用:->setFont($array)

$sheet->setFont(array( 'family' => 'Calibri', 'size' => '15', 'bold' => true ));

分开设置

// Font family $sheet->setFontFamily('Comic Sans MS');

// Font size $sheet->setFontSize(15);

// Font bold $sheet->setFontBold(true);

边框

设置表边框,用:

// 设置所有边框 $sheet->setAllBorders('thin');

// 设置单元格边框 $sheet->setBorder('A1', 'thin');

// 指定范围边框 $sheet->setBorder('A1:F10', 'thin');

自己去参考指南看到可用边框样式的列表。

冻结行

如果想冻结一个单元格,行或者列,用:

// Freeze first row $sheet->freezeFirstRow();

// Freeze the first column $sheet->freezeFirstColumn();

// Freeze the first row and column $sheet->freezeFirstRowAndColumn();

// Set freeze $sheet->setFreeze('A2');

自动过滤

开启自动过滤用:->setAutoFilter($range = false)

// Auto filter for entire sheet $sheet->setAutoFilter();

// Set auto filter for a range $sheet->setAutoFilter('A1:E10');

单元格尺寸 设置列宽 要设置列宽用:->setWidth($cell, $width)

// Set width for a single column $sheet->setWidth('A', 5);

// Set width for multiple cells $sheet->setWidth(array( 'A' => 5, 'B' => 10 ));

设置行高

设置行高:->setHeight($row, $height)

// Set height for a single row $sheet->setHeight(1, 50);

// Set height for multiple rows $sheet->setHeight(array( 1 => 50, 2 => 25 ));

设置单元格尺寸

设置单元格尺寸用:->setSize($cell, $width, $height)

// Set size for a single cell $sheet->setSize('A1', 500, 50);

$sheet->setSize(array( 'A1' => array( 'width' => 50 'height' => 500, ) ));

自动大小

默认情况下导出的文件被自动设置大小,要改变这种行为可以改变配置或使用setter

// Set auto size for sheet $sheet->setAutoSize(true);

// Disable auto size for sheet $sheet->setAutoSize(false);

// Disable auto size for columns $sheet->setAutoSize(array( 'A', 'C' ));

默认配置设置在:export.php。

列合并 合并单元格 要合并单元格,用->mergeCells($range)

$sheet->mergeCells('A1:E1');

合并列和行

合并列和行用:->setMergeColumn($array)

$sheet->setMergeColumn(array( 'columns' => array('A','B','C','D'), 'rows' => array( array(2,3), array(5,11), ) ));

列格式化

要告诉Excel它应该如何解释某些列,可以用->setColumnFormat($array)

// Format column as percentage $sheet->setColumnFormat(array( 'C' => '0%' ));

// Format a range with e.g. leading zeros $sheet->setColumnFormat(array( 'A2:K2' => '0000' ));

// Set multiple column formats $sheet->setColumnFormat(array( 'B' => '0', 'D' => '0.00', 'F' => '@', 'F' => 'yyyy-mm-dd', ));

自己去参考指南看可用于列格式化的列表。

设用PHPExcel的本地方法

可以在$excel 和 $sheet对象调用所有PHPExcel的本地方法。

调用工作薄方法

例子:

// 获得工作薄默认风格 $excel->getDefaultStyle();

调用工作表方法

例子:

// 保护单元格 $sheet->protectCells('A1', $password);


All versions of excel with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package wj/excel contains the following files

Loading the files please wait ....