IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> экспорт данных из stringGrid в excel
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


есть функция
function saveasexcelfile(stringgrid: tstringgrid; filename: string): boolean;
const
xlwbatworksheet = -4167;
var
row, col: integer;
gridprevfile: string;
xlapp, sheet: olevariant;
begin
result := false;
xlapp := createoleobject('excel.application');
try
xlapp.visible := false;
xlapp.workbooks.add(xlwbatworksheet);
sheet := xlapp.workbooks[1].worksheets[1];
sheet.name := 'my sheet name';
for col := 0 to stringgrid.colcount - 1 do
for row := 0 to stringgrid.rowcount - 1 do
sheet.cells[row + 1, col + 1] := stringgrid.cells[col, row];
try
xlapp.workbooks[1].saveas(filename);
result := true;
except
// error ?
end;
finally
if not varisempty(xlapp) then
begin
xlapp.displayalerts := false;
xlapp.quit;
xlapp := unassigned;
sheet := unassigned;
end;
end;
end;


procedure tform1.button1click(sender: tobject);
begin
if saveasexcelfile(stringgrid1, 'c:\myexcelfile.xls') then
showmessage('stringgrid saved!');
end;


Проблема в том что она сохраняет числа без запятой то есть у меня в stringGride число 6,33 а оно сохраняет 6 33 Подскажите где что-то не так!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


 
for col := 0 to stringgrid.colcount - 1 do
for row := 0 to stringgrid.rowcount - 1 do
begin
sheet.cells[row + 1, col + 1].NumberFormat := 'General';
sheet.cells[row + 1, col + 1] := stringgrid.cells[col, row];
end;

выдает ошибку
Project Project2.exe raised exception class EOleException with message 'Нельзя установить свойство NumberFormat класса Range'.


Добавлено через 13 мин.
вот выкладываю все функции!!
function xls_to_stringgrid(agrid: tstringgrid; axlsfile: string): boolean;
const
xlcelltypelastcell = $0000000b;
var
xlapp, sheet: olevariant;
rangematrix: variant;
x, y, k, r: integer;
begin
result := false;
xlapp := createoleobject('excel.application');
try
xlapp.visible := false;

xlapp.workbooks.open(axlsfile);

sheet := xlapp.workbooks[extractfilename(axlsfile)].worksheets[1];
sheet.cells.specialcells(xlcelltypelastcell, emptyparam).activate;

x := xlapp.activecell.row;
y := xlapp.activecell.column;

agrid.rowcount := x+1;
agrid.colcount := y+1;

rangematrix := xlapp.range['a1', xlapp.cells.item[x, y]].value;

k := 1;
repeat
for r := 1 to y do
agrid.cells[(r ), (k )] := rangematrix[k, r];
inc(k, 1);
agrid.rowcount := k;
until k > x;

rangematrix := unassigned;

finally

if not varisempty(xlapp) then
begin
xlapp.quit;
xlapp := unassigned;
sheet := unassigned;
result := true;
end;
end;
end;


function SaveAsExcel(AGrid: tstringgrid; filename: string): boolean;
const
xlwbatworksheet = -4167;
var
row, col: integer;
xlapp, sheet: olevariant;
begin
result := false;
xlapp := createoleobject('excel.application');
try
xlapp.visible := false;
xlapp.workbooks.add(xlwbatworksheet);
sheet := xlapp.workbooks[1].worksheets[1];
sheet.name := 'Лист_1';
for col := 1 to AGrid.colcount - 1 do
for row := 1 to AGrid.rowcount - 1 do begin
sheet.cells[row + 1, col + 1].NumberFormat:='General';
sheet.cells[row + 1, col + 1] := AGrid.cells[col, row];
end;
try
xlapp.workbooks[1].saveas(FileName);
result := true;
except
// error ?
end;
finally
if not varisempty(xlapp) then
begin
xlapp.displayalerts := false;
xlapp.quit;
xlapp := unassigned;
sheet := unassigned;
end;
end;
end;

procedure TForm1.ButtonOpenClick(Sender: TObject);
begin
OpenDialog1.Filter:='*.xls';
if not OpenDialog1.Execute then exit;
Label2.Caption:=OpenDialog1.FileName;
if xls_to_stringgrid(MainStrGrid,Label2.Caption) then
showmessage('Таблица открыта!');
end;

procedure TForm1.ButtonSaveAsClick(Sender: TObject);
begin
if not SaveDialog1.Execute then EXIT;
FileName:=SaveDialog1.FileName;
Caption:=FileName;
try
SaveAsExcel(mainStrGrid,FileName);
ShowMessage('Таблица сохранена!');
except
Exit;
end;
end;


может это поможет!!

Сообщение отредактировано: Sanya01078 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Sanya01078   экспорт данных из stringGrid в excel   25.04.2010 16:00
volvo   Открой полученный XLS, и посмотри, какой формат им…   25.04.2010 16:36
Sanya01078   Я извиняюсь может это и банально! Но не подска…   25.04.2010 16:49
volvo   Слушай, я не понимаю твоих объяснений, воспроизвес…   25.04.2010 17:43
Sanya01078   for col := 0 to stringgrid.colcount - 1 do for…   25.04.2010 17:55
volvo   Если б я не проверив, написал прямо сюда - может б…   26.04.2010 2:35
Sanya01078   Уважаемый volvo я бы если все работало не писал…   26.04.2010 12:49
Client   лучше прикрепи проект :)   26.04.2010 15:14
Sanya01078   Вот примерно так выглядит весь проект! unit ma…   26.04.2010 15:20
Client   а закинуть папку с проектом в архив и залить? нико…   26.04.2010 15:22
Sanya01078   Вот вам и весь проект!   26.04.2010 15:26
Client   погонял проект. если в стирнггриде вводить через т…   26.04.2010 16:04
Sanya01078   то есть надо сделать меньше? В самом екселе пом…   26.04.2010 16:10
volvo   Это до тебя только сейчас дошло, то, о чем тебе на…   26.04.2010 17:25
Sanya01078   В вашем объяснении я не увидел такого совета как …   26.04.2010 20:26


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 15:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name