Не знаете о поведении копирования / вставки в Excel с моего сайта React JS, когда задействованы вкладки? - PullRequest
4 голосов
/ 11 июля 2020

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

Для Например, у меня есть это:

getCopyText() {
   return `a \t b \t b \t ${FAKE_FORECAST_VALUE} \t d \t e`
}

render() {
   return (
       ....
            <CopyToClipboard text={this.getCopyText()}>
              <Button">
                Copy to Clipboard
              </Button>
            </CopyToClipboard>
       ...
   )
}

Когда я нажимаю кнопку, чтобы скопировать текст в буфер обмена и вставить его в Excel, он, похоже, не реагирует на вкладки и просто выглядит как пробелы (также не разделяет значения на столбцы).

Для проверки работоспособности я попытался вставить исходную строку с буфером обмена в Word и включил отображение символов табуляции. Он показал символы табуляции. enter image description here

I then copied the pasted string from Word into Excel. I was confused to see that if I copied the string from Word (which was just pasted from the clipboard) into Excel, it would respond to the tab characters and split the text into multiple columns. введите описание изображения здесь

Итак, вкратце:

  1. Копирование в буфер обмена -> Вставка в Excel = не сохраняет вкладки, не разбивает значения на столбцы, не работа
  2. Копировать в буфер обмена -> Вставка в Word (сохраняет вкладки) -> Копирование вставленной строки из Word в Excel = сохраняет вкладки, разбивает значения на столбцы

Конечно, я не хочу, чтобы пользователям приходилось вставлять строку в другое место и повторно копировать ее перед вставкой в ​​Excel, но я довольно озадачен тем, что здесь происходит, тем более что похоже, что символы табуляции равны в строка (можно увидеть при вставке из буфера обмена в Word или из буфера обмена в vim / notepad et c). Могу ли я что-то сделать со стороны JS вещей или что-то, что можно было бы вставить в строку, чтобы помочь с этим, чтобы пользователю не приходилось с этим иметь дело?

1 Ответ

1 голос
/ 13 июля 2020

Через день или два после того, как я разместил этот вопрос, я действительно нашел ответ этого человека, который помог объяснить, что на самом деле происходит: здесь . Я до сих пор не совсем уверен, объясняет ли / как это объясняет, как работает вставка в Word, а затем копирование оттуда в Excel.

Однако я хотел указать, что для моего конкретного варианта использования c Я получил копию в буфер обмена -> вставить для работы Excel, убедившись, что простой текст был скопирован в буфер обмена, а не определялся как HTML.

Поскольку я использовал зависимость CopyToClipboard (React разнообразие ), это просто вопрос добавления параметра, который позволяет указать, что текст должен копироваться как text / plain.

CopyToClipboard options : Описание параметра .format: String. Optional. Set the MIME type of what you want to copy as. Use text/html to copy as HTML, text/plain to avoid inherited styles showing when pasted into rich text editor.

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