@alexsubline

Как получать динамические значения из таблицы Excel через php?

Здравствуйте, есть excel таблица залитая на google docs. Она работает как "калькулятор", ты вводишь дату рождения, она формирует показатели. Показатели рассчитываются через сложные зависимости по всей таблице.

Вопрос, как можно через php взаимодействовать с таблицей, вводить в нее дату рождения, и получать нужные показатели

при этом чтобы можно было делать минимум 100 запросов в секунду
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
excel таблица залитая на google docs

минимум 100 запросов в секунду

скорее всего нельзя, либо это будет стоить много денег (у гугла есть тарифы на высокую нагрузку). Это просто очень не подходящий инструмент под твою задачу.

Если убрать из списка google, то можно самостоятельно хостить headless excel (майкрософтовский офис, приложение на чем угодно, работа с activex из того же .asp) либо libreoffice, вот пример на питоне но идею я надеюсь ты понял...

и да 100 запросов в секунду потребует от тебя уже пул серверов, так как штатно скорее всего это будет работать несколько медленнее, но пока не попробуешь не узнаешь.
Ответ написан
Комментировать
@AlexVWill
Для Excel скорее всего не получится, а для Google Sheets такое можно провернуть, правда для этого надо не только PHP использовать, а в связке с MySQL.
Для этого надо создать новую таблицу, и в разделе Extensions - Apps Script создать новый скрипт MySQLconnection.gs и там написать что-то вроде
spoiler
var server = "myserver.com";
var port = 3306;
var dbName = "basename";
var username = "user";
var password = "password";
var url = "jdbc:mysql://"+server+":"+port+"/"+dbName;
function readData() {
 var conn = Jdbc.getConnection(url, username, password);
 var stmt = conn.createStatement();
 var results = stmt.executeQuery("SELECT * FROM employee");
 var metaData=results.getMetaData();
 var numCols = metaData.getColumnCount();
 var spreadsheet = SpreadsheetApp.getActive();
 var sheet = spreadsheet.getSheetByName("mysqltest");
 sheet.clearContents();
 var arr=[];
 for (var col = 0; col < numCols; col++) {
   arr.push(metaData.getColumnName(col + 1));
 }
 sheet.appendRow(arr);
while (results.next()) {
 arr=[];
 for (var col = 0; col < numCols; col++) {
   arr.push(results.getString(col + 1));
 }
 sheet.appendRow(arr);
}
results.close();
stmt.close();
sheet.autoResizeColumns(1, numCols+1);
}

соответственно указав в скрипте параметры доступа к твоей базе SQL и нужный SQL запрос SELECT. Т.е. в документ Google Sheet будут динамически загружаться данные из указанной таблицы с твоего сервера SQL, а данные на сервере можно менять через PHP скрипт на нем. С ходу это единственное работающее решение которое в голову приходит.
Вот тут подробности: https://hevodata.com/learn/google-script-connect-t...
Можно конечно еще Google Sheet api попробовать разобраться. но в 1-х это сложнее в том плане что надо документацию прочитать, авторизацию как то наладить, с REST API запросами разобраться, а во 2-х не уверен что это будет также с Excel таблицами работать. Но чисто теоретически можно. Вот тут данные : https://developers.google.com/sheets/api/guides/co...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы