Guest User

Untitled

a guest
May 22nd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. <?php
  2.  
  3. require_once __DIR__.'/vendor/autoload.php';
  4.  
  5. if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file']['tmp_name'])) {
  6. $file = $_FILES['file']['tmp_name'];
  7. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
  8. $spreadsheet = $reader->load($file);
  9. $names = $spreadsheet->getSheetNames();
  10. foreach ($names as $name) {
  11. $sheet = $spreadsheet->getSheetByName($name);
  12. $rowArray = $sheet->toArray();
  13. foreach ($rowArray as $c => $col) {
  14. foreach ($col as $r => $value) {
  15. update($c + 1, $r + 1, $value, $sheet);
  16. }
  17. }
  18. }
  19. unlink($file);
  20. header(sprintf('Content-Disposition: attachment; filename="%s"', date('YmdHis-').(float)microtime().'.xlsx'));
  21. header('Content-Type: application/octet-stream');
  22. $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
  23. $writer->save('php://output');
  24. exit;
  25. }
  26.  
  27. function update($c, $r, $value, $sheet)
  28. {
  29. $cellName = getCell($c, $r);
  30. $clean = replace($value);
  31.  
  32. if ($clean !== $value) {
  33. $type = getExcelType($clean);
  34. $cell = $sheet->getCell($cellName);
  35.  
  36. $type = $type ?: $cell->getDataType();
  37. $cell->setValueExplicit($clean, $type);
  38. }
  39. }
  40.  
  41. function getExcelType($value)
  42. {
  43. if (preg_match('/^[1-9][0-9]*$/', $value)) {
  44. return \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_NUMERIC;
  45. } elseif (preg_match('/^0/', $value)) {
  46. return \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING;
  47. }
  48.  
  49. return null;
  50. }
  51.  
  52. function replace($value)
  53. {
  54. return (string) preg_replace('/^\s*/', '', $value);
  55. }
  56.  
  57. function getCell($col, $row)
  58. {
  59. $second = (int)floor(($row-1)/26);
  60. $secChr = '';
  61. if ($second >= 1) {
  62. $secChr = chr(64 + $second);
  63. }
  64.  
  65. $first = $row % 26;
  66. $firChr = chr(64 + (0 === $first ? 26 : $first));
  67.  
  68. return $secChr . $firChr . $col;
  69.  
  70. // php > echo chr(64+1);
  71. // A
  72. // php > echo chr(64+26);
  73. // Z
  74. // 1 -> A
  75. // 26 -> Z
  76. // 27 -> AA
  77. // 52 -> AZ
  78. // 53 -> BA
  79. // 78 -> BZ
  80. }
  81.  
  82. ?>
  83. <!DOCTYPE html>
  84. <html>
  85. <head>
  86. <meta charset="UTF-8">
  87. <title>excel 不要文字削除</title>
  88. </head>
  89.  
  90. <body>
  91. <h1>不要文字削除フォーム</h1>
  92. <p>ここからエクセルをアップロードすると不要な先頭の空白文字が削除できます<br>簡易スクリプトなのでファイルが大きすぎると動かないかもしれませんTT</p>
  93. <form action="./index.php" method="post" enctype="multipart/form-data">
  94. <input type="file" name="file" />
  95. <input type="submit" />
  96. </form>
  97. </body>
  98.  
  99. </html>
Add Comment
Please, Sign In to add comment