merhaba
d7 fb
soyle bir sorunla karsılastım grid i veya tabloyu excel e atarken sorun olmuyor fakat open office atmiyor.
cozumu ve sebebi nedir arkadslar
tskler
open office
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: open office
Genelde Excel'e atma kodları sistemde yüklü excel programının kütüphanesini kullanmaktadır. Bunlar dışında bir aktarım yolu bulabilirsen sorun yaşamazsın. Oluşturduğun .xls dosyası Openoffice'te de açılacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: open office
akadaşım excele neyle atıyorsun. bunun bi ton yöntemi var. OLE mi, export mu, csv mi.. bunu yazarsan yada kodunu buraya atarasan bakalım. ama benim yaptığım şekilde çalışıor onu bilesinVital yazdı:merhaba
d7 fb
soyle bir sorunla karsılastım grid i veya tabloyu excel e atarken sorun olmuyor fakat open office atmiyor.
cozumu ve sebebi nedir arkadslar
tskler
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Re: open office
office partnerin opexcel ve jv nin export to grid adlı bilesenleri ile table i veya dbgrid i excele gonderiyorum.
Garibanus
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: open office
office partner sistemde yüklü excel kütüphanesini kullanmaktadır. Bu yüzden bunu kullanabilmeniz için sistemde excel yüklü olması şart.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: open office
excel olmadan office partnere gondermenin bir yolu yokmu arkadaslar kod ile vs component kullanmadan
tskler
tskler
Garibanus
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: open office
Office Partner'ı unut o zaman. Başka bir yöntemle aktar. Bir aralar kullandığım bir kod vardı onu aradım buldum. Bunu kullanarak xls dosyası çıkartabilirsin.Kullanımı ise DataSetToExcel_Direct2(Table1,'c:\çıktı.xls');biçimindedir. Kolay gelsin.
Kod: Tümünü seç
type
TCellType = (ctBlank, ctInteger, ctDouble, ctLabel, ctBoolean);
TExcelStream=class(TFileStream)
private
procedure WriteRecordHeader(RecType, Size: integer);
public
constructor Create(const FileName: string; const Mode,LineCount,ColCount: Word);overload;
constructor Create(const FileName: string; const Mode: Word);overload;
constructor Create(const FileName: string);overload;
destructor Destroy; override;
procedure WriteData(CellType: TCellType; ARow, ACol: Integer;Cell: string);overload;
procedure WriteData(Field:TField; ARow, ACol: Integer);overload;
end;
const
BOF = $0009;
BIT_BIFF5 = $0800;
BOF_BIFF5 = BOF or BIT_BIFF5;
BIFF_EOF = $000a;
DIMENSIONS = $0200;
DOCTYPE_XLS = $0010;
LEN_RECORDHEADER = 4;
{ TExcelStream }
function AlanStrlimi(const Alan:TField;const MemoisStr:Boolean=False):Boolean;
begin
Result:=not ((Alan is TBlobField) or (Alan is TBinaryField) or (Alan is TObjectField));
if MemoisStr then Result:=Result or (Alan is TMemoField);
end;
constructor TExcelStream.Create(const FileName: string; const Mode,LineCount, ColCount: Word);
var
Buffer : array[0..4] of word;
begin
inherited Create(FileName,fmCreate);
Buffer[0] := 0;
Buffer[1] := DOCTYPE_XLS;
Buffer[2] := 0;
WriteRecordHeader(BOF_BIFF5, 6);
Write(Buffer, 6);
Buffer[0] := 0;
Buffer[1] := LineCount;
Buffer[2] := 0;
Buffer[3] := ColCount;
Buffer[4] := 0;
WriteRecordHeader(Dimensions, 10);
Write(Buffer, 10);
end;
constructor TExcelStream.Create(const FileName: string; const Mode: Word);
begin
Create(FileName,Mode,0,0);
end;
constructor TExcelStream.Create(const FileName: string);
begin
Create(FileName,fmCreate,0,0);
end;
procedure TExcelStream.WriteRecordHeader(RecType, Size : integer);
var Buffer : array[0..1] of word;
begin
Buffer[0] := RecType;
Buffer[1] := Size;
Write(Buffer, SizeOf(Buffer));
end;
procedure TExcelStream.WriteData(CellType : TCellType; ARow, ACol: Integer; Cell : string);
const
Attribute: Array[0..2] Of Byte = (0, 0, 0); { 24 bit bitfield }
var
Buffer : array[0..1] of word;
RecType : word;
Size : word;
AString : ShortString;
aInt: integer;
aDbl: double;
Data: Pointer;
begin
Buffer[0] := ARow;
Buffer[1] := ACol;
AString := Cell;
case CellType of
ctInteger:begin
RecType := 2;
Size := 9;
WriteRecordHeader(RecType, Size);
Size := 2;
aInt := StrToInt(Cell);
Data := @aInt;
end;
ctDouble:begin
RecType := 3;
Size := 15;
WriteRecordHeader(RecType, Size);
Size := 8;
aDbl := StrToFloat(Cell);
Data := @aDbl;
end;
ctLabel:begin
RecType := 4;
Size := length(Cell) + 8;
WriteRecordHeader(RecType, Size);
end;
else
Exit;
end;
Write(Buffer, SizeOf(Buffer));
Write(Attribute, SizeOf(Attribute));
if CellType = ctLabel then Write(AString, Length(AString) + 1)
else Write(Data^, Size);
end;
procedure TExcelStream.WriteData(Field: TField; ARow, ACol: Integer);
var CellType:TCellType;
begin
if not Field.IsNull then begin
if Field is TNumericField then begin
if Field is TIntegerField then WriteData(ctInteger,ARow,ACol,Field.AsString)
else WriteData(ctDouble,ARow,ACol,Field.AsString);
end else if AlanStrlimi(Field) then WriteData(ctLabel,ARow,ACol,Field.AsString);
end;
end;
destructor TExcelStream.Destroy;
begin
WriteRecordHeader(BIFF_EOF, 0);
inherited Destroy;
end;
function Baslik(const Alan:TField):String;
begin
Result:=Alan.DisplayLabel;
if Trim(Result)='' then Result:=Alan.FieldName;
end;
function DataSetToExcel_Direct2(const DataSet:TDataSet;const DosyaAdi:String;
const KayitlariAktar:Boolean=True):Boolean;
var
ExcelExporter:TExcelStream;
i,Satir:Integer; BunlariAlma:set of Byte;//bu alanlar text e aktarılmazlar...
KayitYeri:TBookmarkStr;
begin
try
Result:=False;
KayitYeri:=DataSet.Bookmark;
Result:=True;
if KayitlariAktar then Satir:=1 else Satir:=0;
ExcelExporter:=TExcelStream.Create(DosyaAdi);//,fmCreate,Satir+DataSet.RecordCount,DataSet.Fields.Count);
with ExcelExporter do begin
try
DataSet.DisableControls;
DataSet.First;
BunlariAlma:=[];
Satir:=0;
for i:=0 to DataSet.FieldCount-1 do begin
if not AlanStrlimi(DataSet.Fields[i]) then Include(BunlariAlma,i);
if KayitlariAktar then WriteData(ctLabel,Satir,i,Baslik(DataSet.Fields[i]));
end;
while not DataSet.Eof do begin
Inc(Satir);
for i:=0 to DataSet.FieldCount-1 do
if not (i in BunlariAlma) then WriteData(DataSet.Fields[i],Satir,i);
DataSet.Next;
end;
except
on E:Exception do begin
ShowMessage(E.Message);
Result:=False;
end;
end;
Free;
end;
except
Result:=False;
end;
DataSet.Bookmark:=KayitYeri;
while DataSet.ControlsDisabled do DataSet.EnableControls;//DisableControls ise tekar açılır
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .