Trang Chủ | Diễn Đàn | Thành Viên (Đăng Ký) | Tìm Kiếm | Tutorial Room
Delphi - Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Hỏi đáp, trao đổi về lập trình Delphi.
Chú ý: Pascal/Delphi FAQs
First page Previous page  (Page 1 )   1   Next page Last page
Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
12:34 05-05-2009
Posts: 26
Fantasy Points: 101
Rank
question Posted at 13:53 23-05-2009 Move Move Topic   Pin/Unpin Pin Topic   Lock Lock Topic
Mình muốn tìm công cụ để nhập dữ liệu dạng bảng như excel sau đó save ra file text. Mình thử sử dụng StringGrid như công cụ này không cho nhập trực tiếp (mình dùng một textbox để nhập) và không cho chèn, xoá dòng nên khi dữ liệu lớn việc xoá dòng và chèn dòng bằng cách dời dữ liệu hơi chậm. Công cụ F1book (trên dp7) thì số dòng hạn chế. Sử dụng DBGrid (với dbclient) thì không cho chọn vùng để copy và xoá. Do kiến thức của mình có hạn chế nên không biết có công cụ nào cho nhập như kiểu excel, cho nhập trực tiếp, cho chọn vùng để xoá và copy, chèn dòng, xoá dòng và số dòng tối đa cũng phải trên 20000 dòng. Bạn nào biết xin chỉ giúp. Cám ơn nhiều.
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,786 time(s). 2 direct repli(es) and 3 indirect repli(es).
Title Poster
question Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
 
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
elleHCSC
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
freeman
Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
11:39 29-09-2001
Posts: 251
Fantasy Points: 3,861
answer Posted at 01:34 02-07-2009
Reply to Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ? (tdvn)
Nếu dùng F1book (trên dp7) thì cũng được khoảng 32635 dòng đấy chứ bác (còn excel thì cũng chỉ cho dùng tới khoảng 65.xxx dòng mà thôi.

Chỉ để dùng để save ra text file thì bạn nên dùng StringGrid

Dùng StringGrid nếu muốn nhập trực tiếp số liệu vào thì tại ObjecInspecter mục Option bạn chọn goEditing là true là nhập vào được mà. Ngoài ra nếu muốn dùng thêm các chức năng tạo thêm dòng, cột hay xoá dòng, cột thì bạn phải gia công viết thêm 1 chút để nó làm được việc này.
Nếu muốn nhanh nữa mà không muốn viết thì bạn có thể qua Torry.net kiếm lấy 1 cái Component nào free về mà dùng...trên đó nhiều lắm. Tôi cũng đã thử nhưng như vậy nhưng sau đó thấy mình tự viết lấy 1 vài thử tục thêm vào cái StringGrid có sẵn của D7 để làm đc các yêu cầu trên vẫn khoái hơn, dù sao tự làm thì kiến thức của mình đc mở mang hơn.
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,699 time(s). 1 direct repli(es) and 1 indirect repli(es).
Title Poster
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
 
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
tdvn
Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
12:34 05-05-2009
Posts: 26
Fantasy Points: 101
Rank
answer Posted at 12:29 06-07-2009
Reply to Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ? (elleHCSC)
Cám ơn bạn đã chỉ dẫn. Nhưng mình thử F1Book (trên DP7) chỉ đc 16384 dòng (hình như trên DP2009 kg có công cụ này)
Nếu dùng StringGrid với goEditing=true thì không cho chọn vùng. Hơn nữa trên StringGrid không có phương thức delete và insert. Mình viết theo kiểu vòng lặp nên nếu số liệu khá lớn thì việc chèn hoặc xoá dòng thực hiện khá lâu. Xoá thì chuyển dl từ dòng i+1 đến dòng i, lặp cho đến hết dòng có dữ liệu. Nếu chèn thì cũng làm tương tự. Mình cũng thấy công cụ StringGrid khá tiện vì nó là của DP, có thể lưu dữ liệu rất lớn, biên dịch chung với file exe, nhưng chưa viết đc cách xử lý chèn và xoá cho nhanh, bạn có thể gợi ý cách nào nhanh hơn đc không. Để tránh phiền phức về sau, có lẽ mình vẫn chọn StringGrid. Một lần nữa cám ơn bạn
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,668 time(s). 1 direct repli(es) and 0 indirect repli(es).
Title Poster
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
 
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
freeman
Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
19:48 04-06-2005
Posts: 332
Fantasy Points: 2,609
answer Posted at 21:16 06-07-2009
Reply to Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ? (tdvn)
Tôi chưa dùng StringGrid nên không biết rõ lắm. Tôi thường dùng 2 hàm Begin/EndUpdate() để thao tác nhanh với ListView. Gọi BeginUpdate() để ngăn không cho Delphi làm tươi lại ListView trước khi bạn xử lý xong dữ liệu. Khi kết thúc thì gọi EndUpdate(). Thông thường tốc độ sẽ nhanh hơn khoảng 3 lần...

Unit1.pas:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Spin, ExtCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    SpinEdit1: TSpinEdit;
    RadioGroup1: TRadioGroup;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  OptimizeTime: Boolean;
  TickCount: Cardinal;
begin
  OptimizeTime := RadioGroup1.ItemIndex = 0;
  with ListView1.Items do
  begin
    if OptimizeTime then BeginUpdate;
    TickCount := GetTickCount();
    for i := 0 to SpinEdit1.Value do
    begin
      Add.Caption := Format('%.2d', [i]);
    end;
    TickCount := GetTickCount() - TickCount;
    if OptimizeTime then EndUpdate;
  end;

  MessageBox(Handle,
    PAnsiChar(Format('TimeCount = %.2n', [TickCount / 1000])),
    'TimeCount',
    MB_OK or MB_ICONINFORMATION);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  OptimizeTime: Boolean;
  TickCount: Cardinal;
begin
  OptimizeTime := RadioGroup1.ItemIndex = 0;
  with ListView1.Items do
  begin
    if OptimizeTime then BeginUpdate;
    TickCount := GetTickCount();
    while Count > 0 do
    begin
      Delete(0);
    end;
    TickCount := GetTickCount() - TickCount;
    if OptimizeTime then EndUpdate;
  end;

  MessageBox(Handle,
    PAnsiChar(Format('TimeCount = %.2n', [TickCount / 1000])),
    'TimeCount',
    MB_OK or MB_ICONINFORMATION);
end;

end.


Unit1.dfm:
object Form1: TForm1
  Left = 192
  Top = 114
  Width = 417
  Height = 248
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object ListView1: TListView
    Left = 8
    Top = 8
    Width = 250
    Height = 193
    Columns = <
      item
        Width = 200
      end>
    TabOrder = 0
    ViewStyle = vsReport
  end
  object Button1: TButton
    Left = 272
    Top = 128
    Width = 121
    Height = 25
    Caption = 'CreateItems'
    TabOrder = 1
    OnClick = Button1Click
  end
  object SpinEdit1: TSpinEdit
    Left = 272
    Top = 8
    Width = 121
    Height = 22
    Increment = 1000
    MaxValue = 0
    MinValue = 0
    TabOrder = 2
    Value = 10000
  end
  object RadioGroup1: TRadioGroup
    Left = 272
    Top = 40
    Width = 121
    Height = 81
    Caption = 'Begin/Endupdate()'
    ItemIndex = 0
    Items.Strings = (
      'Use'
      'Do not use')
    TabOrder = 3
  end
  object Button2: TButton
    Left = 272
    Top = 160
    Width = 121
    Height = 25
    Caption = 'DeleteItems'
    TabOrder = 4
    OnClick = Button2Click
  end
end


Trong StringGrid không thấy hỗ trợ Begin/EndUpdate(). Với ListView thì thao tác thuận tiện hơn: có thể thêm icon (icon tự tạo hoặc icon của tập tin hệ thống- như kiểu WinRAR), sắp xếp items, chuyển đổi nhiều kiểu hiển thị (vsIcon, vsReport, vsList...), thay đổi màu sắc item... Bạn có thể chuyển sang ListView không?
___________________________
sorry for my bad En...
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,658 time(s). 0 direct repli(es) and 0 indirect repli(es).
Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
19:48 04-06-2005
Posts: 332
Fantasy Points: 2,609
answer Posted at 21:22 06-07-2009
Reply to Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ? (tdvn)
tdvn:
(...) có công cụ nào cho nhập như kiểu excel, cho nhập trực tiếp, cho chọn vùng để xoá và copy, chèn dòng, xoá dòng và số dòng tối đa cũng phải trên 20000 dòng. Bạn nào biết xin chỉ giúp. Cám ơn nhiều.


ListView có thể:

- Cho nhập trực tiếp (thuộc tính ReadOnly = False);
- Chọn theo hàng.
- Chèn dòng, xóa dòng.
- Số dòng tối đa tùy theo hệ đều hành.

Các thao tác xóa, sao chép dòng thì bạn chịu khó Google vậy. ListView được sử dụng rất nhiều, chắc cũng dễ tìm thôi.
___________________________
sorry for my bad En...
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,655 time(s). 1 direct repli(es) and 0 indirect repli(es).
Title Poster
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
 
answer Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
tdvn
Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ?
Member
Member since
12:34 05-05-2009
Posts: 26
Fantasy Points: 101
Rank
answer Posted at 11:07 07-07-2009
Reply to Re: Sử dụng công cụ nào để nhập dữ liệu dạng bảng như excel ? (freeman)
Mình cũng chưa quen ListView. Để mình nghiên cứu thử xem cái nào thuận tiện cho công việc của mình hơn. cám ơn bạn
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 1,640 time(s). 0 direct repli(es) and 0 indirect repli(es).
First page Previous page  (Page 1 )   1   Next page Last page

Permissions: Create Topic: No  |  Reply Topic: No  |  Attach File: No  |  Make Poll: No

Vietnamese Keyboard: AUTO TELEX VNI VIQR VIQR* OFF

Go top || Print page ||

All logos, trademarks and graphics artwork in this site are property of their respective owners.
Opinions expressed in articles within this site are those of their owners and may not reflect the opinion of TXBB.

TXBB: Home - Disclaimer - Help - Contact
Copyright (C) 2000-2006 TXBB. All rights reserved.

TreXanh Bulletin Board v2.0 (Build: #332 Nov 21, 2006)

DEBUG INFORMATION
Execution 0.189s - SQL used 5s - Concurrent process(es) 0