Главная страница
    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.48 MB
Время: 0.007 c
3-1207230280
ANB
2008-04-03 17:44
2008.10.05
Оракл : как попользовать в запросе два with ?


15-1218713820
cyborg
2008-08-14 15:37
2008.10.05
Алгоритм Ахо-Карасик


15-1218804027
*Pavel
2008-08-15 16:40
2008.10.05
Сеть между PC-DOS и Windows XP через null-modem-ный кабель


15-1219030948
Slider007
2008-08-18 07:42
2008.10.05
С днем рождения ! 17 августа 2008 воскресенье


2-1219778976
dar
2008-08-26 23:29
2008.10.05
canvas под углом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский