Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Вниз

Как преобразовать "таблицу" из буфера обмена в HTML документ   Найти похожие ветки 

 
Vayrus   (2008-08-23 16:48) [0]

Подскажите, пожалуйста!
Дано:
скопированные в буфер обмена ячейки из EXСEL.
Вопрос:
как создать HTML-документ с простой таблицей, состоящей из этих ячеек?


 
DVM ©   (2008-08-23 17:14) [1]

из буфера обмена их можно забрать как текст с разделителями TAB.


 
Vayrus   (2008-08-23 17:25) [2]


> DVM ©   (23.08.08 17:14) [1]
>
> из буфера обмена их можно забрать как текст с разделителями
> TAB.


Будь добр пример, с буфером обмена и разделителями, кроме запятой, не сталкивался особо.


 
palva ©   (2008-08-23 20:12) [3]

Пример чего? Как вынуть буфер обмена в текстовом виде?


 
Vayrus   (2008-08-23 20:58) [4]


> palva ©   (23.08.08 20:12) [3]
>
> Пример чего? Как вынуть буфер обмена в текстовом виде?


Пример того, как вынуть текст из буфера обмена с разделителями TAB и преобразовать его в HTML.


 
TStas ©   (2008-08-23 21:11) [5]

Вот я чтобы ответить на вопрос написал в экселе талицу из 3 стролбцов и трех строк, скопировал её и сейчас ставляю в ответ.
1 2 3
11 12 13
21 22 23

Программно это будет S:= ClipBoard.AsText, где S - строчка.
List := TstringList.Create; List.Text := S; Получится список строк, в котором каждая строка - это строка таблицы, в которой ячейки разделены символом таблуляции (#9). Нужно дальше писать, что нужно сделать?


 
Vayrus   (2008-08-23 21:45) [6]


> TStas ©   (23.08.08 21:11) [5]
>
> Вот я чтобы ответить на вопрос написал в экселе талицу из
> 3 стролбцов и трех строк, скопировал её и сейчас ставляю
> в ответ.
> 1 2 3
> 11 12 13
> 21 22 23
>
> Программно это будет S:= ClipBoard.AsText, где S - строчка.
>
> List := TstringList.Create; List.Text := S; Получится список
> строк, в котором каждая строка - это строка таблицы, в которой
> ячейки разделены символом таблуляции (#9). Нужно дальше
> писать, что нужно сделать?


Вот теперь все понял, спасибо. Обсуждение закрыто.


 
Vayrus   (2008-08-24 18:57) [7]

Поспешил ;-)

В чем ошибка...

function ReplaceSubString(source,target,new:string):string;
var
rslt: String;
begin
While POS(target,source)>0 do
begin
rslt:=rslt+copy(source,1,POS(target,source)-1)+new;
Delete(source,1,POS(target,source)+Length(target)-1);
Application.ProcessMessages;
end;
Result:=rslt+source;
end;

function To_HTML_Table(InTxt: String): String;
const
first="<TR><TD noWrap width="30%">";
Stand="</TD><TD noWrap align=middle width="1%">";
closet="</TD></TR>";
var
List : TstringList;
OutL : TstringList;
I:Integer;
S:String;
begin
List := TstringList.Create;
OutL := TstringList.Create;
List.Text := InTxt;
for i:=0 to list.Count-1 do
begin
S:=List.Strings[i];
S:=ReplaceSubString(S,#9,Stand);
S:=first+S+closet;
OutL.Add(S);
Application.ProcessMessages;
end;
RESULT:=OutL.Text;
List.Free;
OutL.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if not CheckBox1.Checked then
begin
ShowMessage("ClipBoard is empty!");
EXIT;
end;
Memo1.Clear;
memo1.Text:=To_HTML_Table(CB.AsText);
end;

Подскажите в чем ошибка?
Есть такая строчка в буфере обмена:
АЕ 2066-20А* 2 853,0 554,5

Вместо:
<TR><TD noWrap width="30%">АЕ 2066-20А*</TD><TD noWrap align=middle width="1%">2</TD><TD noWrap align=middle width="1%"> 853,0 </TD><TD noWrap align=middle width="1%"> 554,5 </TD></TR>

выдает:
<TR><TD noWrap width="30%">АЕ 2066-20А*</TD><TD noWrap align=middle width="1%"></TD><TD noWrap align=middle width="1%"></TD><TD noWrap align=middle width="1%">2</TD><TD noWrap align=middle width="1%"> 853,0 </TD><TD noWrap align=middle width="1%"> 554,5 </TD></TR>


 
Vlad Oshin ©   (2008-08-25 09:53) [8]

1.
В решении вопроса заинтересован ты. Поэтому, вместо того, что ты написал, выложил бы хотя бы так:

function ReplaceSubString(source,target,new:string):string;
var
 rslt: String;
begin
 While POS(target,source)>0 do
 begin
   rslt:=rslt+copy(source,1,POS(target,source)-1)+new;
   Delete(source,1,POS(target,source)+Length(target)-1);
   Application.ProcessMessages;
 end;
 Result:=rslt+source;
end;

function To_HTML_Table(InTxt: String): String;
const
 first="<TR><TD noWrap width="30%">";
 Stand="</TD><TD noWrap align=middle width="1%">";
 closet="</TD></TR>";
var
 List : TstringList;
 OutL : TstringList;
 I:Integer;
 S:String;
begin
 List := TstringList.Create;
 OutL := TstringList.Create;
 List.Text := InTxt;
 for i:=0 to list.Count-1 do
 begin
   S:=List.Strings[i];
   S:=ReplaceSubString(S,#9,Stand);
   S:=first+S+closet;
   OutL.Add(S);
   Application.ProcessMessages;
 end;
 RESULT:=OutL.Text;
 List.Free;
 OutL.Free;
end;


2. Раз есть всякие компоненты, то желательно ложить dfm.
для твоего же примера, достаточно так:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(To_HTML_Table("АЕ 2066-20А* 2 853,0 554,5"));
end;

нечего чекбоксами и прочим людей дурить (особенно в понедельник с утра :))

3.
Возьми клавиатуру, где работают кнопки F8 и F7,
пошагово пройди путь выполнения процедур, глядя как меняются переменные.


 
Vayrus   (2008-08-25 12:02) [9]

Vlad Oshin

Некритично



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
2-1219719263
Strungout
2008-08-26 06:54
2008.10.05
Как "вшить" файл в программу?


15-1218274270
king
2008-08-09 13:31
2008.10.05
Опыт работы


1-1198856107
Max
2007-12-28 18:35
2008.10.05
Подсказка...


2-1219247974
fellow
2008-08-20 19:59
2008.10.05
цвет строки dbgrid по условию определенного поля


2-1219409920
Bolodya
2008-08-22 16:58
2008.10.05
SQL -- выбор уникальных записей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский