推荐阅读PHP 百万级数据导出方案(多 CSV 文件压缩)
php
有自带函数fputcsv
,fgetcsv
是可以行操作,写入和读取excel
数据的
提示 导出的数据可以直接写成键值对数组的形式,即可得到统一的标题
写入
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
读取
$fp = fopen('file.csv', 'r');
$data = fgetcsv($fp);
组件的使用
1.基本
2.Excel::create('Filename', function($excel) {
// Call writer methods here
});
从数组创建工作表
数组
从一个阵列中使用创建一个新文件->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');
$sheet->fromArray($data, null, 'A1', false, false);
五个参数
1.表格里面的内容
5。false则不现实标题 标题可以自动生成
行操作
操纵某一行
更改单元格值
$sheet->row(1, array(
'test1', 'test2'
));
// Manipulate 2nd row
$sheet->row(2, array(
'test3', 'test4'
));
操作行单元格
$sheet->row(1, function($row) {
$row->setBackground('#000000');
});
追加行
// Append row after row 2
$sheet->appendRow(2, array(
'appended', 'appended'
));
// Append row as very last
$sheet->appendRow(array(
'appended', 'appended'
));
前端行
// Add before first row
$sheet->prependRow(1, array(
'prepended', 'prepended'
));
// Add as very first
$sheet->prependRow(array(
'prepended', 'prepended'
));
附加多行
// Append multiple rows
$sheet->rows(array(
array('test1', 'test2'),
array('test3', 'test4')
));
// Append multiple rows
$sheet->rows(array(
array('test5', 'test6'),
array('test7', 'test8')
));
细胞操作
$sheet->cell('A1', function($cell) {
// manipulate the cell
$cell->setValue('data1');
});
$sheet->cells('A1:A5', function($cells) {
// manipulate the range of cells
});
设置背景
要改变一系列单元格的背景,我们可以使用->setBackground($color, $type, $colorType)
// Set black background
$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(
'top' => array(
'style' => 'solid'
),
));
设置水平对齐
// Set alignment to center
$cells->setAlignment('center');
设置垂直对齐
// Set vertical alignment to middle
$cells->setValignment('center');
设置垂直对齐
// Set vertical alignment to middle
$cells->setValignment('center');
自动尺寸
默认情况下,导出的文件会自动调整大小。要更改此行为,您可以更改配置或使用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'
));
列合并
合并细胞
要合并的单元格区域,请使用->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),
)
));