Excel hücre boş ve dolu ise..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Excel hücre boş ve dolu ise..

Mesaj gönderen Serhat »

Selam;

Excelden listview'e kayıt girişi yapıyorum; 5, 6 ve 7. kolonlarda saat var, komut olarak (TimeToStr(VarToDateTime) kullanıyorum.
Sorun ise bu kodu kaldırırsam hücre dolu ise 00:00:00 girilmiş olan bu değerler listviewe yüklendiğinde 0,20.0500 gibi saçma bir durum ortaya çıkıyor. Arada bir hücreye hiç saat girişi yapılmamışsa bu seferde 00:00:00 diye lisview kendiliğinde saat ekliyor bu iki durumu nasıl çözebilirim????

Kod: Tümünü seç

Kyt.SubItems.Add(TimeToStr(VarToDateTime(Sheet.Cells[Kolon, 5])));
En son Serhat tarafından 19 Tem 2016 02:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Excel hüçre boş ve dolu ise...

Mesaj gönderen ertank »

Merhaba,

Excel içinde gördüğünüz ile verinin kendisi aynı olmayabilir. Ayrıca "Sheet" nesnesinin ne olduğunu açıklamamışsınız.

Tamamen tahmin üzerine, aşağıdaki şekilde bir komut çalıştırdığınızda dolu olan hücreler için nasıl bir sonuç alıyorsunuz?

Kod: Tümünü seç

  ShowMessage(VarToStr(Sheet.Cells[Kolon, 5]));
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Excel hücre boş ve dolu ise..

Mesaj gönderen Serhat »

Selamla,

Shee alanı Variant, vermiş olduğunuz "VarToStr" işe yapamadı:((;

Yapmak istediğim şey bir hücrede zaman örnek: 02:30:00 gibi bir değer girilmişse bu değer bozulmadan lisviewe alınacak eğer hücreye bir değer girişilmişse boş olarak listviewe satırlar eklenecek...

Kod: Tümünü seç

const
  xlCellTypeLastCell = $0000000B;
var
  Kyt: TListItem;
  Str: String;
  Book: Variant;
  Excel, Sheet: Variant;
  Kolon, SSay: Integer;
begin
  try
    Excel := CreateOleObject('Excel.Application');
    With TOpenDialog.Create(Nil) do
    begin
      Filter := 'Excel *.xls,*.xlsx|*.xls;*.xlsx';
      FilterIndex := 1;
      if Execute then
      begin
        Book := Excel.WorkBooks.Open(FileName);
        Sheet := Book.worksheets[1];
        SSay := Excel.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell,
          EmptyParam).Row;
        with ListView12 do
        begin
          Items.BeginUpdate;
          try
            for Kolon := 1 to SSay do
            begin
              Screen.Cursor := crHourGlass;
              Str := Sheet.Cells[Kolon, 1];
              Kyt := Items.Add;
              Kyt.Caption := IntToStr(Items.Count);
              Kyt.SubItems.Add(Sheet.Cells[Kolon, 1]);
              Kyt.SubItems.Add(Sheet.Cells[Kolon, 2]);
              Kyt.SubItems.Add(Sheet.Cells[Kolon, 3]);
              Kyt.SubItems.Add(Sheet.Cells[Kolon, 4]);

              Kyt.SubItems.Add(Null(Sheet.Cells[Kolon, 5]));

              Kyt.SubItems.Add(VarToStr(Sheet.Cells[Kolon, 6]));

              Kyt.SubItems.Add(VarToStr(Sheet.Cells[Kolon, 7]));
Cevapla