Текущий архив: 2014.08.17;
Скачать: CL | DM;
ВнизDelphi + Excel 2003 Найти похожие ветки
← →
darthnihilus (2013-09-25 11:43) [0]Помогите пожалуйста.
Написал прожку, которая данные и стринггрида выводит в ексель. Работаю с ней уже второой год. И вдруг внезапно сегодня пару минут назад прога начала отказываться експортировать данные в ексель. Выдает ошибку типа "нельзя установить свойство sheetsinnewworkbook класса application".
Можете ли что-то посоветовать не видя моего кода? Это обычная ошибка? Или выложить код експорта?
← →
brother © (2013-09-25 11:47) [1]> не видя моего кода
кинь кости или ошибка в 17 строке...
← →
darthnihilus (2013-09-25 12:06) [2]procedure TForm2.btnIntoExcelClick(Sender: TObject);
var
Excel, WorkBook, Sheet: Variant;
i,j,Count,RC:Integer;
SaveTo:string;
begin
btnIntoExcel.Enabled:=False;
if SaveDialog1.Execute then SaveTo:=SaveDialog1.FileName;
Excel := CreateOleObject("Excel.Application");
Excel.SheetsInNewWorkbook :=1;
WorkBook := Excel.WorkBooks.Add;
Excel.Visible:=True;
WorkBook := Excel.WorkBooks.Item[1];
Sheet := Workbook.Sheets.Item[1];
Count:=Form2.Tag;
RC:=Form2.StringGrid1.RowCount-1;
Sheet.Range[Sheet.Cells[1,1],Sheet.Cells[Count,3]].ClearContents;
Sheet.Range[Sheet.Cells[1,1],Sheet.Cells[Count,2]].NumberFormat:= "@";
Sheet.Range[Sheet.Cells[1,3],Sheet.Cells[Count,3]].NumberFormat:="# ##0,00";
for i:=1 to RC do
for j:=1 to 2 do
begin
Application.ProcessMessages;
Sheet.Cells.Item[i,j].Value2:=Form2.StringGrid1.Cells[j,i];
end;
for i:=1 to RC do
begin
Application.ProcessMessages;
Sheet.Cells.Item[i,3].Value2:=StrToFloat(Form2.StringGrid1.Cells[3,i]);
end;
Excel.DisplayAlerts:=False;
Excel.ActiveWorkbook.SaveAs(SaveTo);
Excel.Quit;
Excel:=Unassigned;
end;
← →
никита2013 (2013-09-25 12:56) [3]Проблема думаю в Экселе. Попробуй переустановить...
← →
darthnihilus (2013-09-25 15:02) [4]Пробовал :(
← →
Кирюха (2013-09-25 15:40) [5]Попробуй так: http://www.delphisources.ru/pages/faq/base/sg_to_excel_exp.html
← →
darthnihilus (2013-09-25 16:34) [6]Попробую - отпишусь.
← →
darthnihilus (2013-09-26 10:39) [7]Не помогло
← →
Кирюха (2013-09-26 12:25) [8]Погугли, еще где-то видел по другому экспорт народ делает...
← →
[ВладОшин] © (2013-09-26 12:35) [9]procedure ExportAllSG(Sheet: Variant; SG: TStringGrid; BeginRow, BeginCol: Integer; var EndRow, EndCol: Integer);
var
i, j: Integer;
ArrayData: Variant;
begin
EndRow := SG.RowCount + BeginRow;
EndCol := SG.ColCount + BeginCol;
ArrayData := VarArrayCreate([1, EndRow + 1, 1, EndCol + 1], varVariant);
for i := 1 to SG.ColCount do
for j := 1 to SG.RowCount do
ArrayData[J, I] := SG.Cells[i - 1, j - 1];
SetValue(Sheet, BeginCol, BeginRow, BeginCol + EndCol, BeginRow + EndRow, ArrayData);
end;
procedure SetValue(Sheet: Variant; BC, BR, EC, ER: Integer; Val: variant);
var
Cell1, Cell2, Range: Variant;
begin
Cell1 := Sheet.Cells[BR, BC];
Cell2 := Sheet.Cells[ER, EC];
Range := Sheet.Range[Cell1, Cell2];
Range.Value := Val;
end;
Sheet := WorkBook.WorkSheets[1];
← →
NoUser © (2013-09-26 23:02) [10]!!! sheetsinnewworkbook !!!
ЗаменитьExcel.SheetsInNewWorkbook :=1;
наfor i:=0 to GetTickCount do Application.ProcessMessages;
А если так уж нужен ван шыт то передExcel.ActiveWorkbook.SaveAs(SaveTo);
добавитьwhile WorkBook.WorkSheets.Count>1 do WorkBook.WorkSheets[WorkBook.WorkSheets.Count].Delete;
Страницы: 1 вся ветка
Текущий архив: 2014.08.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.005 c