Импорт JDBC в листы, как сохранить ведущие нули на полях? - PullRequest
1 голос
/ 24 октября 2019

У меня так много проблем с ведущими нулями в целом. Импортируя в Sheets с использованием JDBC-соединения, я не нашел способа сохранить нули. Типы столбцов: varchar () для значений различной длины и char () для статической длины.

В прошлом с другими данными я добавлял начальные значения к значениям или выбирал метод getDisplayValue () для их сохранения. Что будет работать здесь?

while (results.next()){
          var tmpArr = [];
          var rowString = '';
          for (var col = 0; col < numCols; col++) {
            rowString += results.getString(col + 1) + '\t';
            tmpArr.push(results.getString(col + 1));
          }
          valArr.push(tmpArr);
        }

        sheet.getRange(3, 1 , valArr.length, numCols).setValues(valArr);

Data Exmaple varchar column:

0110205361
0201206352
140875852
LFCP01367
LGLM00017

1 Ответ

1 голос
/ 08 ноября 2019

Вы извлекаете данные в Google Sheet из таблицы базы данных MySQL, используя Jdbc. Один из столбцов базы данных отформатирован как «varchar» и содержит некоторые числовые значения, которые имеют один или несколько ведущих нулей. Когда вы обновляете значения базы данных в Google Sheet, начальные нули не отображаются.

Почему

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

С другой стороны, если ячейки отформатированы как Число, Простой текст , то все числовые значения «интерпретируются» как строки, и все ведущие нули сохраняются.

Эффект форматирования хорошо виден на следующих изображениях, которые также включают формулы istext и isnumber для подтверждения того, как они интерпретируются для каждого типа формата.


Отформатировано как число - обычный текст - обрабатывается как строки

Formatted as plain text


Отформатировано как число - автоматически - обрабатывается как числа

Formatted as Number-Automatic


Форматирование на лету

Альтернатива предварительному форматированию (который не был успешным в случае ОП) - установить формат как часть метода setValues(), используя setNumberFormat

Например:

sheet.getRange(3, 1 , valArr.length, numCols).setNumberFormat('@STRING@').setValues(valArr);

Существует полезное обсуждение этого метида в Форматирование ячейки Google Sheets в виде открытого текста через Apps Script

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...