X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=bomgen%2FBomgen%2Ffunctions.inc.php;h=b72c2393f541e57f750a339a99bf3785f3363d00;hb=HEAD;hp=b2abe0bda0ec472c3322992210b24d3765c70912;hpb=ce621674685a46fd06f0f75ac0d41719358651d4;p=eda-utils.git diff --git a/bomgen/Bomgen/functions.inc.php b/bomgen/Bomgen/functions.inc.php index b2abe0b..b72c239 100644 --- a/bomgen/Bomgen/functions.inc.php +++ b/bomgen/Bomgen/functions.inc.php @@ -146,7 +146,7 @@ function xls_write_cell_gen($row, $col, $value, $format_texte, $entete, $size, $ $value = mb_convert_encoding($value, "ISO-8859-1", "UTF-8"); /* Création object format. */ - $format =& $workbook->addFormat(); + $format =& $workbook->addFormat(); /* Grosseur du texte. */ $format->setSize($size); @@ -157,6 +157,7 @@ function xls_write_cell_gen($row, $col, $value, $format_texte, $entete, $size, $ if ($format_texte == XLS_FORMAT_TEXT) { $format->setAlign('left'); + $format->setAlign('top'); } else if ($format_texte == XLS_FORMAT_MONETARY) { $format->setNumFormat('$0.00'); } @@ -183,7 +184,11 @@ function xls_write_cell_gen($row, $col, $value, $format_texte, $entete, $size, $ $format->setLeft(1); /* Bordure de gauche. */ } - $worksheet->write($row, $col, $value, $format); + if ($format_texte == XLS_FORMAT_TEXT) { + $worksheet->writeString($row, $col, $value, $format); + } else { + $worksheet->write($row, $col, $value, $format); + } } function xls_write_col_header($row, $col, $value) @@ -291,4 +296,145 @@ function get_manufacturer($item) return $manufacturer; } +function xls_configure($workbook, $worksheet) +{ + global $col_id_to_xls_num, $csv_infos; + + /* Configration des couleurs de cellules. */ + xls_set_colors($workbook); + + foreach ($csv_infos as $key => $value) { + $width = $value['width']; + + /* Ajustement de la largeur de chaque colonne. */ + if ($width) { + /* S'assure que la colonne a été exportée dans le fichier CSV. */ + if (isset($col_id_to_xls_num[$key])) { + $worksheet->setColumn($col_id_to_xls_num[$key], $col_id_to_xls_num[$key], + $width); + } else { + echo "Colonne '$key' manquante.\n"; + } + } + } + + $worksheet->setLandscape(); + $worksheet->setPaper(PAPER_US_LETTER); +} + +/* + * value: clé + * c: Numéro de colonne dans le fichier CSV. + * xls_c: Numéro de colonne dans Excel. + */ +function determine_col_index($value, $c, $xls_c) +{ + global $col_id_to_num, $col_num_to_id, $col_id_to_xls_num; + + $col_id_to_num[$value] = $c; + $col_num_to_id[$c] = $value; + $col_id_to_xls_num[$value] = $xls_c; +} + +/* Conversion colonne numérique à lettre: + * 0 -> A + * 1 -> B + * ... + */ +function col_to_letter($c) +{ + $c = intval($c + 1); /* c part à 0. */ + + if ($c <= 0) + return ''; + + $letter = ''; + + while($c != 0) { + $p = ($c - 1) % 26; + $c = intval(($c - $p) / 26); + $letter = chr(65 + $p) . $letter; + } + + return $letter; +} + +function bom_import_source($filename) +{ + global $col_id_to_num, $num, $row_num, $add_cost, $csv_infos, $entete, $data; + + $handle = fopen($filename, "r"); + + if ($handle == FALSE) { + echo "Error opening file: " . $filename . "\n"; + exit(1); + } + + /* Read and import BOM source file. */ + while (($row = fgetcsv($handle, 1024, ',')) !== false) { + $num = count($row); + + if ($num < 2) { + /* Ligne vide. */ + continue; + } + + if ($row_num == 1) { + /* Entête. */ + + if ($add_cost == true) { + /* Ajout colonne temporaire pour le total cost. */ + $row[$num] = "TotalCost"; + $num++; + } + + /* Ajout colonne temporaire selon le type de composant. Cela est + * nécessaire pour faire le tri correctement. */ + $row[$num] = "Type"; + $num++; + + /* Index de la prochaine colonne disponible pour affichage. */ + $k = 0; + + for ($c = 0; $c < $num; $c++) { + $id = $row[$c]; + + determine_col_index($id, $c, $k); + + if (isset($csv_infos[$id])) { + if ($csv_infos[$id]['width'] != 0) { + $nom = $csv_infos[$id]['nom']; + + $entete[$k] = $nom; + + $k++; + } + } else { + echo "Colonne '$id' non supportée.\n"; + } + } + } else { + $ref_prefix2 = substr($row[$col_id_to_num[DESIGNATOR_COL_NAME]], 0, 2); + $company_pn = substr($row[$col_id_to_num[COMPANY_PN_COL_NAME]], 0, 1); /* Pour les vieux BOMs qui n'ont pas + * l'attribut NOPOP. */ + if (($ref_prefix2 == "MH") || + ($ref_prefix2 == "TP") || + ($ref_prefix2 == "FI") || + (array_key_exists(ASSEMBLY_COL_NAME, $col_id_to_num) && ($row[$col_id_to_num[ASSEMBLY_COL_NAME]] == DO_NOT_POPULATE_KEYWORD)) || + ($company_pn == "*")) { + /* Enlève les composants non désirés. */ + continue; + } + + $ref_prefix = substr($ref_prefix2, 0, 1); + $row[$col_id_to_num['Type']] = $ref_prefix; + $data[] = $row; + } + + $row_num++; + } + + fclose($handle); +} + ?>