推薦閱讀PHP 百萬級(jí)數(shù)據(jù)導(dǎo)出方案(多 CSV 文件壓縮)
php
有自帶函數(shù)fputcsv
,fgetcsv
是可以行操作,寫入和讀取excel
數(shù)據(jù)的
提示 導(dǎo)出的數(shù)據(jù)可以直接寫成鍵值對(duì)數(shù)組的形式,即可得到統(tǒng)一的標(biāo)題
寫入
$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
});
從數(shù)組創(chuàng)建工作表
數(shù)組
從一個(gè)陣列中使用創(chuàng)建一個(gè)新文件->fromArray($source, $nullValue, $startCell, $strictNullComparison, $headingGeneration)
的封板內(nèi)边臼。
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')
));
如果你想傳遞閉包內(nèi)的變量假消,使用 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);
五個(gè)參數(shù)
1.表格里面的內(nèi)容
5柠并。false則不現(xiàn)實(shí)標(biāo)題 標(biāo)題可以自動(dòng)生成
行操作
操縱某一行
更改單元格值
$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')
));
細(xì)胞操作
$sheet->cell('A1', function($cell) {
// manipulate the cell
$cell->setValue('data1');
});
$sheet->cells('A1:A5', function($cells) {
// manipulate the range of cells
});
設(shè)置背景
要改變一系列單元格的背景,我們可以使用->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
));
設(shè)置邊框
// Set all borders (top, right, bottom, left)
$cells->setBorder('solid', 'none', 'none', 'solid');
// Set borders with array
$cells->setBorder(array(
'top' => array(
'style' => 'solid'
),
));
設(shè)置水平對(duì)齊
// Set alignment to center
$cells->setAlignment('center');
設(shè)置垂直對(duì)齊
// Set vertical alignment to middle
$cells->setValignment('center');
設(shè)置垂直對(duì)齊
// Set vertical alignment to middle
$cells->setValignment('center');
自動(dòng)尺寸
默認(rèn)情況下富拗,導(dǎo)出的文件會(huì)自動(dòng)調(diào)整大小堂鲤。要更改此行為,您可以更改配置或使用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'
));
列合并
合并細(xì)胞
要合并的單元格區(qū)域媒峡,請(qǐng)使用->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),
)
));