Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А как записываются формулы?
<c><f>SUM(A1:C1)</f><v>6</v></c><sheetData>
<row><c t="inlineStr"><is><t>Paris</t></is></c></row>
<row><c t="inlineStr"><is><t>Seattle</t></is></c></row>
<row><c t="inlineStr"><is><t>London</t></is></c></row>
<row><c t="inlineStr"><is><t>Copenhagen</t></is></c></row>
<row><c t="inlineStr"><is><t>Paris</t></is></c></row>
<row><c t="inlineStr"><is><t>London</t></is></c></row>
</sheetData>
7z.exe x file1.xlsx function xlsx2sql($xl_file){
$xl_dir = $xl_file.'unzip';
//dbg("unzip '$xl_file' -d '$xl_dir'");
exec("unzip '$xl_file' -d '$xl_dir'");
$xml = simplexml_load_file("$xl_dir/xl/sharedStrings.xml");
$json = json_encode($xml);
$sharedStrings = json_decode($json,TRUE);
$xml = simplexml_load_file("$xl_dir/xl/worksheets/sheet1.xml");
$json = json_encode($xml);
$sheet1 = json_decode($json,TRUE);
//print_r($sharedStrings['si'][0]['t']);
//print_r($sheet1['sheetData']['row'][0]['c'][0]['@attributes']['t']);
//
//exit;
$row_num=0;
foreach($sheet1['sheetData']['row'] as $row){
// echo('row-------------'."\n");
$row_num++;
$row_array = array();
foreach($row['c'] as $cell){
// print_r($cell);
$t='';
if(isset($cell['@attributes']['t'])){
$t=$cell['@attributes']['t'];
}
$value='';
if($t=='s'){
if(isset($cell['v'])){
$v=$cell['v'];
$value=$sharedStrings['si'][$v]['t'];
}
}else{
if(isset($cell['v'])){
$value=$cell['v'];
}
}
// echo $value."\n";
array_push($row_array,$value) ;
}//row
// тут работаем с $row_array -- список ячеек
}
}
Все хорошо и понятно. Но есть вопрос :)
Как привести ширину столбца в нормальный размер, например в мм или дюймах?
<col min="1" max="2" width="9" customWidth="1"/>В этой строке width - вычисляемое значение,
width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256
А как его привести в привычные единицы измерения?
Препарирование файлов .XLSX: строковые значения, разметка ячеек