Topic: Импорт из XLS

Добрый день. Возможен импорт данных в таблицу из экселя?

Re: Импорт из XLS

http://myvisualdatabase.com/forum/viewtopic.php?id=1373

в самой MVD есть средство импорт/экспорт "настройка.....

3 (edited by Игорь Вальченко 2019-12-12 05:48:40)

Re: Импорт из XLS

Сделал как в примере, не отрабатывает, можете посмотреть?

Post's attachments

Attachment icon магазин_одежды.zip 344.98 kb, 270 downloads since 2019-12-12 

Re: Импорт из XLS

Ваш CSV файл в ANSI кодировке, чтобы загрузить данный файл, необходимо использовать sl.LoadFromFileAnsi(OpenDialog.FileName); вместо sl.LoadFromFile (OpenDialog.FileName);


Также присутствует ошибка в коде, в arrStr[1] забыли изменить индекс, поправил скрип:

procedure card_Button4_OnClick (Sender: string; var Cancel: boolean);
var
   OpenDialog: TOpenDialog;
   sl: TStringList;
   arrStr: array of string;

   i,c: integer;
begin
     OpenDialog := TOpenDialog.Create(card);
     OpenDialog.InitialDir := ExtractFileDir(Application.Exename);

     if OpenDialog.Execute then
     begin
          sl := TStringList.Create;
          //sl.LoadFromFile (OpenDialog.FileName);
         sl.LoadFromFileAnsi(OpenDialog.FileName);

          //ShowMessage(c);
          c := sl.Count - 1;
          for i := 0 to c do
          begin
               arrStr := SplitString(sl[i], ';');

               // card_name
               if arrStr[0] <> '' then arrStr[0] := ''''+ ReplaceStr(arrStr[0], '''', '''''') + ''''
                   else arrStr[0] := 'NULL';

               // quantity
               if arrStr[1] <> '' then arrStr[1] := ''''+ ReplaceStr(arrStr[1], '''', '''''') + ''''
                   else arrStr[1] := 'NULL';

                // price
               if arrStr[2] <> '' then arrStr[2] := ''''+ ReplaceStr(arrStr[2], '''', '''''') + ''''
                   else arrStr[2] := 'NULL';

                // season
               if arrStr[3] <> '' then arrStr[3] := ''''+ ReplaceStr(arrStr[3], '''', '''''') + ''''
                   else arrStr[3] := 'NULL';

               SQLExecute ('INSERT INTO cards (card_name, quantity,price,season) VALUES ('+ arrStr[0] +','+ arrStr[1]+','+ arrStr[2] +','+ arrStr[3] +');');

               card.Label5.Caption := IntToStr(i+1) + ' of ' + IntToStr(c+1);
               Application.ProcessMessages;
          end;

          sl.Free;
          card.TableGrid1.dbUpdate;
     end;
     OpenDialog.Free;
end;
Dmitry.