@PressOff

Где и что подкрутить для чтения загружаемого файла в формате xslx в базу данных?

Доброго времени суток!

Хочу закачать файл в формате xlsx на сервер mysql через php.
Что указать в файле upload_excel.php, что бы тот в свою очередь видел название полученного файла и его формат из index.php.

Ниже представлены 2 кода из файлов:
Это из HTML:
<form action="/upload_excel.php" method="post" enctype="multipart/form-data">
        <label for="upload_file"></label>
        <input type="file" name="upload_file" accept="application/vnd.ms-excel" id="filename" />
        <input  type="submit" value="Загрузить Excel"/>
    </form>


ну а это PHP соответственно:

$connection = new mysqli("localhost", "root", "", "eshop");
$connection->set_charset("utf8");

require_once './PHPExcel/Classes/PHPExcel.php';

$PHPExcel_file = PHPExcel_IOFactory::load("./price_download_29.12.2019.xlsx");

foreach ($PHPExcel_file->getWorksheetIterator() as $worksheet) {

    $columns_str = "";
    $columns_count = PHPExcel_Cell::columnIndexFromString($worksheet->getHighestColumn());

    for ($column = 0; $column < $columns_count; $column++) {
        $columns_str .= ($columns_name_on1line ? "column" . $column : $worksheet->getCellByColumnAndRow($column, 1)->getCalculatedValue()) . ",";
    }

    $columns_str = substr($columns_str, 0, -1);

    $connection->query("DROP TABLE IF EXISTS exceltable");
    $connection->query("CREATE TABLE exceltable (" . str_replace(",", " TEXT NOT NULL,", $columns_str) . " TEXT NOT NULL)");
    
    $rows_count = $worksheet->getHighestRow();

    for ($row = 1; $row <= $rows_count; $row++) {
        $value_str = "";

        for ($column = 0; $column < $columns_count; $column++) {
            $merged_value = "";
            $cell = $worksheet->getCellByColumnAndRow($column, $row);

            foreach ($worksheet->getMergeCells() as $mergedCells) {
                if ($cell->isInRange($mergedCells)) {
                    $merged_value = $worksheet->getCell(explode(":", $mergedCells)[0])->getCalculatedValue();
                    break;
                }
            }

            $value_str .= "'" . (strlen($merged_value) == 0 ? $cell->getCalculatedValue() : $merged_value) . "',";
        }

        $value_str = substr($value_str, 0, -1);

        $connection->query("INSERT INTO exceltable (" . $columns_str . ") VALUES (" . $value_str . ")");
    }
}
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
В этом коде не нужно "подкручивать", нужно написать код сохранения файла "price_download_29.12.2019.xlsx" в текущую директорию относительно php обработчика. Как это делается - есть много примеров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект