|
|
@@ -7397,12 +7397,19 @@ class Whlabel extends Start_Controller
|
|
|
//用XML(SpreadsheetML)格式导出excel,逻辑与_whlabelexcelzh一致,仅输出格式不同
|
|
|
public function _whlabelexcelzh()
|
|
|
{
|
|
|
- $excelxml = function ($info_list, $headers, $numkeys, $filename) {
|
|
|
+ //$colwidths:按表头顺序设置各列宽度(单位≈字符数);$wrapcols:需要自动换行的列下标(从0开始)
|
|
|
+ $excelxml = function ($info_list, $headers, $numkeys, $filename, $colwidths = array(), $wrapcols = array()) {
|
|
|
$str = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
|
|
|
$str .= '<?mso-application progid="Excel.Sheet"?>' . "\n";
|
|
|
$str .= '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel">' . "\n";
|
|
|
+ $str .= '<Styles>' . "\n";
|
|
|
+ $str .= '<Style ss:ID="wrap"><Alignment ss:Vertical="Center" ss:WrapText="1"/></Style>' . "\n";
|
|
|
+ $str .= '</Styles>' . "\n";
|
|
|
$str .= '<Worksheet ss:Name="Sheet1">' . "\n";
|
|
|
$str .= '<Table>' . "\n";
|
|
|
+ foreach ($colwidths as $w) {
|
|
|
+ $str .= '<Column ss:Width="' . $w . '"/>' . "\n";
|
|
|
+ }
|
|
|
$str .= '<Row>' . "\n";
|
|
|
foreach ($headers as $h) {
|
|
|
$str .= '<Cell><Data ss:Type="String">' . htmlspecialchars($h, ENT_QUOTES, 'UTF-8') . '</Data></Cell>' . "\n";
|
|
|
@@ -7410,16 +7417,19 @@ class Whlabel extends Start_Controller
|
|
|
$str .= '</Row>' . "\n";
|
|
|
foreach ($info_list as $row) {
|
|
|
$str .= '<Row>' . "\n";
|
|
|
+ $j = 0;
|
|
|
foreach ($row as $ke => $va) {
|
|
|
$va = (string)$va;
|
|
|
$va = str_replace('<br>', "\n", $va);
|
|
|
+ $wrapattr = in_array($j, $wrapcols) ? ' ss:StyleID="wrap"' : '';
|
|
|
if ($va === '') {
|
|
|
- $str .= '<Cell><Data ss:Type="String"></Data></Cell>' . "\n";
|
|
|
+ $str .= '<Cell' . $wrapattr . '><Data ss:Type="String"></Data></Cell>' . "\n";
|
|
|
} else if (in_array($ke, $numkeys) && is_numeric($va)) {
|
|
|
- $str .= '<Cell><Data ss:Type="Number">' . $va . '</Data></Cell>' . "\n";
|
|
|
+ $str .= '<Cell' . $wrapattr . '><Data ss:Type="Number">' . $va . '</Data></Cell>' . "\n";
|
|
|
} else {
|
|
|
- $str .= '<Cell><Data ss:Type="String">' . htmlspecialchars($va, ENT_QUOTES, 'UTF-8') . '</Data></Cell>' . "\n";
|
|
|
+ $str .= '<Cell' . $wrapattr . '><Data ss:Type="String">' . htmlspecialchars($va, ENT_QUOTES, 'UTF-8') . '</Data></Cell>' . "\n";
|
|
|
}
|
|
|
+ $j++;
|
|
|
}
|
|
|
$str .= '</Row>' . "\n";
|
|
|
}
|
|
|
@@ -7492,7 +7502,10 @@ class Whlabel extends Start_Controller
|
|
|
$filename = $title . ".xls";
|
|
|
$headers = array('仓库', 'SKU', '产品', '库存数量', '在途数量及预达日期', '在途+库存数量');
|
|
|
$numkeys = array('number', 'hb');
|
|
|
- $excelxml($rows, $headers, $numkeys, $filename);
|
|
|
+ //列宽与表头一一对应(单位≈字符数);SKU(1)、产品(2)、在途列(4)超宽自动换行
|
|
|
+ $colwidths = array(80, 300,450, 50, 120, 80);
|
|
|
+ $wrapcols = array(1, 2, 4);
|
|
|
+ $excelxml($rows, $headers, $numkeys, $filename, $colwidths, $wrapcols);
|
|
|
}
|
|
|
if (isset($_GET['excel'])) {
|
|
|
$warehouse = $this->input->get('warehouse', true);
|
|
|
@@ -7542,7 +7555,10 @@ class Whlabel extends Start_Controller
|
|
|
$filename = $title . ".xls";
|
|
|
$headers = array('仓库', 'SKU', '名称', '在途数量', '库存数量', '添加在途日期', '预达日期', '备注');
|
|
|
$numkeys = array('num', 'features');
|
|
|
- $excelxml($zh, $headers, $numkeys, $filename);
|
|
|
+ //列宽与表头一一对应(单位≈字符数);SKU(1)、名称(2)、备注(7)超宽自动换行
|
|
|
+ $colwidths = array(18, 20, 50, 12, 12, 20, 12, 40);
|
|
|
+ $wrapcols = array(1, 2, 7);
|
|
|
+ $excelxml($zh, $headers, $numkeys, $filename, $colwidths, $wrapcols);
|
|
|
}
|
|
|
}
|
|
|
|