Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3

Буфер обмена +Excel

18.01.2019, 16:20. Показов 1795. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Если выделить группу ячеек в Excel, скопировать в буфер и после вставить в письмо, то текст вставляется как таблица. Rак можно добится данного результата со своим выделенным текстом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2019, 16:20
Ответы с готовыми решениями:

Буфер обмена
Как сделать так что бы программа постоянно проверяла буфер обмена и содержимое буфера добавляла в Memo1. Додумался только до : ...

Буфер обмена
Как в билдере скопировать значение из буфера обмена и записать тудаже??

Буфер обмена (ClipBoard)
У кого есть исходники, для работы с буферам и картинками, кому не жалко поскидайте. Спасибо )

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
18.01.2019, 16:28
"Со своим" - это с каким? Откуда текст копироваться будет?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
18.01.2019, 16:34  [ТС]
обычная таблица аналог SG, с нее собираю текст по ячейкам в строку так:

C++
1
2
3
4
5
6
7
8
9
10
 TNextGrid6* grid = static_cast<TNextGrid6*> (Sender);
 String st = "";
 if(Shift.Contains(ssCtrl)&&(Key == 'C') )
  for(int j = Y1; j <= Y2; ++j)
      {
       for(int i = X1; i <= X2; ++i)
          st += grid->Cells[i][j].Trim()+"  ";
       st +="\r\n";
      }
  Clipboard()->AsText = st.TrimRight();

В сам Excel вставляется нормально, все распихивается по колонкам
0
51 / 39 / 15
Регистрация: 20.09.2018
Сообщений: 163
21.01.2019, 06:43
Из excel в буфер обмена таблица копируется просто как текст с расставленными символами табуляции '\t' в местах окончания ячейки и символами '\r\n' при переходе на новую строку.
Поэтому когда пытаешься вставить из буфера обмена текст, скопированный из Excel, то в обработчике вставки просто анализируй текст на эти символы. Если встретился '\t', значит в SG надо перейти в следующую в текущей строке ячейку. Если встретились '\r\n', то в SG надо перейти в следующую строку.

Вот пример моего кода на этот случай (на красоту не претендую, писано давно и не правда):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    AnsiString fromClipboard,cell_data="";
    char * chBuffer;
    int i,row=0,col=0;
 
    OpenClipboard(NULL);
    HANDLE hData = GetClipboardData(CF_TEXT);
    chBuffer = (char*)GlobalLock(hData);
    fromClipboard = chBuffer;
 
    for(i=0;i<fromClipboard.Length();i++)
    {
        switch(chBuffer[i])
        {
            case '\r':continue;
            case '\t':
            {
                StringGrid1->Cells[col][row]=cell_data;
                cell_data="";
                col++;
                break;
            }
            case '\n':
            {
                StringGrid1->Cells[col][row]=cell_data;
                cell_data="";
                col=0;
                row++;
                if(i!=fromClipboard.Length()-1)StringGrid1->RowCount++;
                break;
            }
            default:
            {
                cell_data+=chBuffer[i];
                break;
            }
        }
    }
 
    GlobalUnlock(hData);
    CloseClipboard();
1
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,411
Записей в блоге: 3
21.01.2019, 07:01
А так?
C++
1
st += grid->Cells[i][j].Trim()+'\t';
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
21.01.2019, 10:33  [ТС]
Еще раз доброго, не помогло

Добавлено через 5 минут
При копирование таблицы именно из Excel в Outlook, создается прям таблица с табуляцией, разметкой и другой шалухой, не просто как текст.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
21.01.2019, 11:14
При копировании таблицы из Excel формат ClipBoard-а становится BIFF8, надо искать описание формата (оно есть в открытом доступе), и заносить свои данные в том же формате в буфер обмена.
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
21.01.2019, 11:20  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
формат ClipBoard-а становится BIFF8
ох ты ж е мае.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2019, 11:20
Помогаю со студенческими работами здесь

RichEdit и буфер обмена Windows
Добрый день! Есть RichEdit на форме. Есть текст в буфере обмена, который должен быть вставлен в RichEdit. Размер текста более 64...

Как перехватить буфер обмена?
Подскажите, как сделать чтоб скопированную в буфер обмена картинку, или текст отправилялась на почту? к примеру на дельфине отправка...

Рандом в билдере. Буфер обмена
Необходимо выводить на экран рандомное число, но в формате хххххх и копировать его в буфер обмена windows. помогите советом,...

Как скопировать текст в буфер обмена?
есть к примеру текст Hello как его скопировать в буффер обмена? подскажите плз

Буфер обмена, перехватывается микрософтовскими программами
Привет форумчане, суть вопроса состоит в том, что моя программа, перехватывает картинку с веб камеры и через буфер(не особо понимаю как,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru