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

Вниз

форматирование ячеек в excel   Найти похожие ветки 

 
rosl   (2003-05-13 03:27) [0]

Как програмно произвести форматирование ячеек в excel (например сделать ячейку в текстовом формате, изменить ширину столбца и т.д.)


 
Татьяна   (2003-05-13 08:37) [1]

Когда-то давно занималась этой проблемой, вот кусочек кода,
наверное можно делать и как-то по-другому, это просто как вариант
ответа на твой вопрос.

procedure TFMenu21.RadioButton5Click(Sender: TObject);
const
xlCenter=-4108;
XLWBatWorksheet=-4167;// для создания книги с одной страницей
Var
xl : OleVariant;
x,i,first : integer; // first для переименования страницы с именем "Лист1"
x1,y1 : integer; // для выделения диапазона в Excel
begin
try
// Excel уже запущен?
xl:=GetActiveOleObject("Excel.Application");
ShowMessage("У Вас уже загружен Excel.Завершите его работу, а затем повторите вывод");
xl.Application.WindowState:=-4137;
//xl.Visible:=True;
xl.Quit;
xl:=Unassigned;
Exit;
except
// Hет, еще нет...
xl:=CreateOleObject("Excel.Application");
end;
xl.Workbooks.Add[XLWBatWorksheet];
// xl.Visible:=True;
first:=1;
x1:=0;
Y1:=0;
For i:=3 downto 1 do begin
x:=2;
if first=0 then xl.Workbooks[1].Worksheets.Add else first:=0;
If i=1 then
begin
xl.Range[xl.Cells[x,2],xl.Cells[x+1,14]].MergeCells:=True; // объединение ячеек
xl.Range[xl.Cells[x,2],xl.Cells[x+1,14]].WrapText:=True; // перенос текста
xl.Workbooks[1].Worksheets[1].Name:="имя страницы";

// Вывожу какую-то шапку таблицы
x:=x+1;
xl.Range[xl.Cells[x,2],xl.Cells[x+2,2]].MergeCells:=True; // объединение ячеек
xl.Cells[x,2]:="столбик 1";
xl.Range[xl.Cells[x,3],xl.Cells[x+1,4]].MergeCells:=True; // объединение ячеек
xl.Cells[x,3]:="столбик 2";
// Вывожу данные из Ttable (DM.TsvodD1) в Excel
DM.TSvodD1.Open;
DM.TSvodD1.First;
x1:=x; // запоминаю начальную строку
While not DM.TSvodD1.Eof do
begin
xl.Workbooks[1].WorkSheets[1].Activate;
xl.ActiveWindow.DisplayZeros:=False; // не показывать нули
xl.ActiveWindow.DisplayGridlines:=False; // не показывать сетку
// жирный шрифт xl.Range[xl.Cells[x,2],xl.Cells[x,2]].Font.Bold:=True;
xl.Cells[x,2]:=DM.TSvodD1F.Value;

if DM.TSvodD1T.Value=1 then xl.Cells[x,3]:="< 0.2";
if DM.TSvodD1T.Value=2 then xl.Cells[x,3]:="0.2-0.3";
// if DM.TSvodD1T.Value=3 then xl.Cells[x,3]:="> 0.3";
if DM.TSvodD1T.Value=3 then xl.Cells[x,3]:=" 0.5 ";

xl.Cells[x,4]:=DM.TSvodD1M.Value;

xl.Range[xl.Cells[x,7],xl.Cells[x,7]].NumberFormat:="@"; // установка текстового формата для ячейки
xl.Cells[x,14]:=DM.TSvodD1Proc.Value;
x:=x+1;
DM.TSvodD1.Next;
end; // while not TSvodD1.Eof
y1:=x-1; // запоминаю конечную строку

// вывожу итоги
xl.Workbooks[1].WorkSheets[1].Rows.Rows[x].RowHeight:=44.25; // высота строки
xl.Range[xl.Cells[x,2],xl.Cells[x,14]].WrapText:=True;

// Форматирую
xl.Workbooks[1].worksheets[1].Range[xl.Cells[1,2],xl.Cells[x,14]].VerticalAlignment:=2;
xl.Workbooks[1].worksheets[1].Range[xl.Cells[x-3,2],xl.Cells[x,14]].HorizontalAlignment:=xlCenter; // выводить в центре ячейки
xl.Workbooks[1].worksheets[1].Range[xl.Cells[x-3,2],xl.Cells[x,14]].Font.Bold:=True;
xl.Workbooks[1].worksheets[1].Range[xl.Cells[x-3,3],xl.Cells[x-3,14]].Borders.Weight := 2;
// устанавливаю ширину колонок
xl.Workbooks[1].worksheets[1].Columns.Columns[1].ColumnWidth:=2.43;
// границы ячейки
xl.Workbooks[1].worksheets[1].Range[xl.Cells[x1,2],xl.Cells[y1,2]].NumberFormat:="0,0";
xl.Range[xl.Cells[x1,4],xl.Cells[y1,4]].NumberFormat:="0,0";

xl.Visible:=True;


 
Валера   (2003-05-13 09:14) [2]

Можно сделать проще, запусти Excel, запусти запись макроса и делай что тебе нужно, то как ворматирование текста, установка ширины ячейки, да всё что угодно, а потом смотри что он там на генерировал в Visual Basice .....


 
Соловьев   (2003-05-13 09:25) [3]


> Валера (13.05.03 09:14

классный способ, я так тоже делаю, но надо учесть что код на VB будет отличаться: списком перемменных, обьектов и свойств, которые доступны в Delphi. Но там труда большего не составит разобраться что к чему...


 
rosl   (2003-05-13 09:32) [4]

Спасибо Татьяна, попробую.



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

Форум: "Базы";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-2754
Otchet
2003-05-13 14:54
2003.06.02
Stack OverFlow


14-3086
nizar
2003-05-14 04:50
2003.06.02
Forum Reader


1-2904
Nikos
2003-05-22 17:55
2003.06.02
Как вызвать процедуру OnDrawCell объекта ТStringGrid


3-2750
phisy1
2003-05-13 14:41
2003.06.02
Фиксированный dbgrid


1-3003
JS
2003-05-21 18:54
2003.06.02
Перерисовка компонента





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