Как импортировать xlsx и csv в базу данных битрикса?

Для импорта файлов xlsx и csv в базу данных Битрикса можно воспользоваться стандартными средствами данной CMS, а именно через модуль "Импорт данных из CSV" или через API Битрикса.

1. Используя модуль "Импорт данных из CSV":
- Перейдите в административную часть Битрикса.
- В разделе "Настройки" выберите "Импорт данных из CSV".
- Загрузите файл CSV или xlsx, выберите соответствующие опции импорта (например, разделитель полей, соответствие колонок в файле и полям в базе данных).
- Выберите нужную информационную блок или каталог для импорта данных.
- Настройте мэппинг полей, чтобы соответствовать структуру данных исходного файла.
- Запустите процесс импорта.

2. Используя API Битрикса:
- Напишите PHP-скрипт, который будет считывать данные из файла xlsx или csv.
- С помощью API Битрикса подключитесь к базе данных и выполните SQL-запросы для добавления данных из файла.
- Обработайте данные из файла и добавьте их в соответствующую таблицу базы данных Битрикса.

Пример скрипта для импорта данных из CSV в Битрикс:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use BitrixMainLoader;
use BitrixMainConfigOption;
use BitrixMainIOFile;
use BitrixMainApplication;
use BitrixMainSystemException;

Loader::includeModule('iblock');

$filePath = $_SERVER["DOCUMENT_ROOT"] . "/import/file.csv";

if (!File::isFileExists($filePath)) {
    die("File not found");
}

$csvFile = new CFile();
$csvFile->Download($filePath);

$csvFilePath = $csvFile->GetPath();

$arParams = array(
    "separated" => ";",
    "first_names_r" => "Y",
    "name_template" => "I"
);

if ($IBLOCK_ID = (int)Option::get("catalog", "default_catalog")) {
    $uploadFilePath = Application::getDocumentRoot() . $csvFilePath;

    if (($csvFile = fopen($uploadFilePath, "r")) !== false) {
        $elementsImported = 0;
        while (($data = fgetcsv($csvFile, 1000, $arParams["separated"])) !== false) {
            $arFields = array(
                "IBLOCK_ID" => $IBLOCK_ID,
                "NAME" => $data[1],
                "ACTIVE" => "Y",
                // Дополнительные поля из файла можно добавить аналогично вышеуказанному
            );

            $el = new CIBlockElement();
            if ($el->Add($arFields)) {
                $elementsImported++;
            }
        }
        
        fclose($csvFile);
        
        echo "Imported elements: " . $elementsImported;
    } else {
        echo "Error opening file";
    }
} else {
    die("Catalog ID not found");
}

Необходимо учитывать структуру CSV или xlsx файла и подстраивать скрипт под нее. Важно также учитывать права доступа к файлам и безопасность обработки данных.