Excel скопировать в буфер обмена усечения данных - PullRequest
3 голосов
/ 10 августа 2009

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

Проблема в том, что я вижу только отображаемые данные, а не базовые значения. Например, если значение ячейки равно 12.223, а формат ячейки показывает только 12.2, 12.2 переходит в буфер обмена.

Мне не хватает трюка здесь? Кто-нибудь знает, как вытащить полные данные из буфера обмена?

Редактировать. Похоже, что Excel делает 25 различных форматов доступными в буфере обмена, включая «XML Spreadsheet», которая выглядит так, как будто содержит актуальную информацию, которая мне нужна. Однако, похоже, что в браузере доступна только текстовая версия. Есть ли элемент управления ActiveX или что-то подобное, что я могу использовать, чтобы получить эти данные?

Ответы [ 4 ]

5 голосов
/ 10 августа 2009

Единственный способ, которым я могу это сделать, - это создать код VBA, который использует библиотеку объектов Windows Forms.

Я нашел пример кода, который использует буфер обмена

http://www.dailydoseofexcel.com/archives/2004/12/02/putting-text-into-the-windows-clipboard/

По умолчанию это просто скопирует видимый текст ячейки. Чтобы вывести фактическое значение, вам нужно изменить

cell.Text

до

cell.Value

Хотя это, вероятно, испортит любые даты, если они у вас есть.

EDIT:

На самом деле, похоже, даты копируются нормально

0 голосов
/ 23 августа 2009

Учитывая, что вы не можете изменить таблицу Excel, похоже, вы застряли. Проблема в том, что буфер обмена Windows не распознает браузер как способный принимать что-либо, кроме простого текста из вставки. Из-за этого он вставляется в виде простой текстовой таблицы, которая в основном представляет собой просто визуальное представление данных, которые вам предоставляет Excel.

Если вы создали компонент ActiveX для страницы, который мог бы, кроме данных электронных таблиц, тогда, я думаю, должна работать вставка Excel. Однако реализация чистого JavaScript в браузере не будет делать то, что вам нужно.

0 голосов
/ 18 августа 2009

При условии, что вы счастливы использовать дополнительный лист для хранения данных, отформатированных для копирования, вы также можете сделать следующее

Sub CopyPasteSpecialCopy()

    'Clear out temp destination
    Sheets("CopyPasteSheet").Select
    Cells.Select
    Selection.ClearContents

    'Copy data
    Sheets("DataSheet").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy

    'Paste data
    Sheets("CopyPasteSheet").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells.Select
    Application.CutCopyMode = False

    'Put it onto the clipboard
    Selection.Copy

End Sub

Хотя я не вижу опции для вставки только значений XML.

Снова этот макрос может быть присоединен к комбинации клавиш Ctrl + C .

0 голосов
/ 18 августа 2009

После того, как вы скопировали ячейку, щелкните правой кнопкой мыши и выберите «Специальная вставка», затем выберите «Значения» в разделе «Вставить». Это вставит полное значение.

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