Все это есть выполняется в разных PHP-скриптах посредством разных запросов AJAX.
Код: Выделить всё
$inputfilepath = $_POST['dbgetpath'];
$filevar = './' . substr($inputfilepath, strrpos($inputfilepath, '\\' ) +1 ) . "\n" ; // outputs a string
$selectsheet = $_POST['sheetselect'];
echo $filevar . " " . gettype($filevar) . " " . $selectsheet; // for debugging
// Load PhpSpreadsheet library.
require_once('vendor/autoload.php');
// Import classes.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
// Read the Excel file.
$reader = IOFactory::createReader("Xlsx");
$reader->setReadDataOnly(true);
$reader->setLoadSheetsOnly($selectsheet);
$spreadsheet = $reader->load($filevar, FILE_SKIP_EMPTY_LINES);
// Export to CSV file.
$writer = IOFactory::createWriter($spreadsheet, "Csv");
$writer->setDelimiter(','); // Set delimiter.
$fileproc = substr($filevar,0,-5); //remove extension from name string
$filename = $fileproc . ".csv";
$writer->save($filename); // save output
Код: Выделить всё
$('#csvSend').on('click', function() {
var dbgetpath = document.getElementById("fileselect").value; // this is reporting a "fake" path from the C drive
var sheetselect = document.getElementById("selectSheet").value;
$.ajax({
url:"compiler.php",
dataType: 'text',
method:"POST",
data: {dbgetpath:dbgetpath, sheetselect:sheetselect},
success: function(scop_response){
var dbresult = scop_response;
document.getElementById('subcon3').innerHTML = "Result: " + dbresult;
console.log(dbresult);
}
});
});
Если я закомментирую весь раздел электронной таблицы PHP после эха, скрипт сработает и выведет строку как следует:
"Результат: ./myexceldoc.xlsx строка Sheet1 string."
Я ожидал, что PHPspreadsheet выдаст файл .csv с тем же именем, что и исходный .xlsx, но все, что я получаю, это журнал в консоли (с использованием версии Firefox Dev) для запроса и без вывода.
Когда я блокирую комментарий к части таблицы PHP, эхо работает правильно, и AJAX Функция Internalhtml обновляет DOM.
Когда я раскомментирую часть таблицы PHPspreadsheet, DOM перестает обновляться, но эхо все равно работает. Если я открою консоль и перейду к POST, то для «ответа» строка все равно будет найдена там.
Однако файл .csv не создается, и я понятия не имею, почему средство записи файлов, по-видимому, делает абсолютно ничего.
Подробнее здесь: https://stackoverflow.com/questions/791 ... x-filepath
Мобильная версия