Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2013, 12:12   #1
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
По умолчанию Из EXCEL в bat

Доброе время суток.
Очень срочно нужна Ваша помощь, суть состоит в следующем имеется выгрузка в EXCEL, где нужно из этой выгрузки добавить поля в текстовый документ...НО!!! не все так просто текстовик надо сделать в таком виде как bat файл, в этом и заключается вся сложность
файл проекта, bat'ник, и выгрузку выкладываю. Подскажите как?
Вложения
Тип файла: rar из Excel в bat.rar (345.0 Кб, 13 просмотров)

Последний раз редактировалось demon-sheff; 02.04.2013 в 12:23. Причина: добавил
demon-sheff вне форума Ответить с цитированием
Старый 02.04.2013, 13:11   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А что именно то не получается? BAT это простой текстовый файл с расширением bat и если там есть русские символы, то в кодировке 866.
FaTaL вне форума Ответить с цитированием
Старый 02.04.2013, 14:06   #3
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
По умолчанию

Я не знаю как сделать, чтоб брала данные из таблицы EXCEL и добавляла их в текстовый документ
demon-sheff вне форума Ответить с цитированием
Старый 03.04.2013, 06:27   #4
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
Печаль Посмотрите что не так при выводе их Excel в текстовый документ?

Ребята, подскажите что не так делаю? очень срочно нужна ваша помощь т.к. сам не могу разобраться. Не получается взять 2 поля из выгрузки excel и вставить как в bat - файле. Очень рассчитываю на вашу помощь
Вложения
Тип файла: rar из Excel в bat.rar (955.5 Кб, 10 просмотров)
demon-sheff вне форума Ответить с цитированием
Старый 03.04.2013, 08:06   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

За тебя писать нет времени, но вот вытащил из одного своего старого проекта:
Код:
  Ex := CreateOleObject('Excel.Application'); // Открываем Excel
  Ex.WorkBooks.Open (Путь к твоему файлу);
  Ex.WorkBooks[1]; // Выбираем рабочую книгу
  Ex.Sheets[2]; // Выбираем рабочий лист
  // Активируем последнюю строчку
  Ex.Cells.SpecialCells($0000000B, EmptyParam).Activate;
  for I := 2 to Ex.ActiveCell.Row do
    begin
      s := Ex.Cells[i,2];
      ss := Ex.Cells [i,5];
      Application.ProcessMessages;
    end;
  Ex.Quit; // Закрываем объект Excel
  Ex := Unassigned;
Надеюсь сможешь подправить под свои нужды?!
FaTaL вне форума Ответить с цитированием
Старый 03.04.2013, 10:10   #6
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
По умолчанию

спасибо за помощь я в предыдущем ответе прикрепил, там выгрузка идет в StringGrid, а надо чтобы от туда уже в мемо
Изображения
Тип файла: jpg Безимени-2.jpg (66.0 Кб, 141 просмотров)
demon-sheff вне форума Ответить с цитированием
Старый 03.04.2013, 11:36   #7
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Зачем столько гемороя я не пойму. Берешь в цикле нужные тебе значения и пишешь в TStringList, потом сохраняешь в БАТ и всё. СтрингГрид то и Мемо зачем тебе?
FaTaL вне форума Ответить с цитированием
Старый 03.04.2013, 11:48   #8
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
По умолчанию

программа то нужна для пользователей, которые должны все это видеть дабы не получилось, такого что :"я тут нажимаю, а у меня ничего не происходит?"( посмотри пожалуйста исходник буду очень благодарен. Вроде все уже сделал осталось только добавить поля из Edit'ов
Вложения
Тип файла: rar из Excel в bat.rar (958.8 Кб, 10 просмотров)

Последний раз редактировалось demon-sheff; 03.04.2013 в 14:11. Причина: добавил
demon-sheff вне форума Ответить с цитированием
Старый 03.04.2013, 14:25   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

У меня твоя прога при запуске сразу в AV уходит на Win7. Кидай свой код сюда и напиши, что у тебя не получается. Как я понял, сначала ты указываешь путь к XLSX файл, потом нажимаешь загрузить и тебя должны данные отобразиться с СтрингЛисте?
Если так, то быстрее будет заново переписать, чем разбираться в твоём проекте, т.к. времени нет.

Последний раз редактировалось FaTaL; 03.04.2013 в 14:31.
FaTaL вне форума Ответить с цитированием
Старый 03.04.2013, 14:40   #10
demon-sheff
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 46
По умолчанию

не получается вывести в stringrid еще 2 поля. вообщем код выглядит так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls, jpeg, {ExtCtrls,} ComCtrls, {WideStrings, FMTBcd,} DB,
Menus, {pngimage, SimpleDS,} DBCtrls, Mask, Grids, ComObj;

type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Memo1: TMemo;
SpeedButton3: TSpeedButton;
StringGrid1: TStringGrid;
SpeedButton4: TSpeedButton;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Excel, Range : Variant;
implementation

{$R *.dfm}


procedure TForm1.SpeedButton1Click(Sender: TObject);
var i,j:integer;
begin
If OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog 1.FileName);
Edit1.Text:=OpenDialog1.FileName;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
Var I : Byte;
F : TextFile;
S : String;
begin
AssignFile(F, Edit2.Text);
Rewrite(F);
For I := 1 to StringGrid1.RowCount - 1 do
Begin
S := StringGrid1.Cells[0,I] +' '+StringGrid1.Cells[1,I];
Writeln(F,S);
end;
CloseFile(F);
ShowMessage('Файл сохранен!');
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
StringGrid1.rowcount:=StringGrid1.r owcount+1;
StringGrid1.Cells[0,StringGrid1.rowcount]:=Edit3.text;
StringGrid1.Cells[3,StringGrid1.rowcount]:=Edit4.text;
//Memo1.lines.Add('communicator.exe -x 10.43.121.15:8080 -u inet -p inet rosreestr f238c1505fb881dd3da64241dc2a0739', x ,'"Vashi dokumenti:', y ,'gotovy');
end;

function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// создание Excel-OLE объекта
XLApp := CreateOleObject('Excel.Application' );
try
// скрыть Excel
XLApp.Visible := False;

// открыть книгу
XLApp.Workbooks.Open(AXLSFile);

// Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];

// In order to know the dimension of the WorkSheet, i.e the number of rows
// and the number of columns, we activate the last non-empty cell of it

Sheet.Cells.SpecialCells(xlCellType LastCell, EmptyParam).Activate;
// Get the value of the last row
x := XLApp.ActiveCell.Row;
// Get the value of the last column
y := XLApp.ActiveCell.Column;

// Set Stringgrid's row &col dimensions.

AGrid.RowCount := x;
AGrid.ColCount := y;

// Assign the Variant associated with the WorkSheet to the Delphi Variant

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
// Define the loop for filling in the TStringGrid
k := 1;
repeat
for r := 1 to y do
AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;

// Unassign the Delphi Variant Matrix
RangeMatrix := Unassigned;

finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
// XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if Xls_To_StringGrid(StringGrid1, 'C:\Книга1.xlsx') then

ShowMessage('Данные перенесены!');
StringGrid1.rowcount:=StringGrid1.r owcount+1;
StringGrid1.Cells[0,StringGrid1.rowcount]:=Edit3.text;
StringGrid1.Cells[3,StringGrid1.rowcount]:=Edit4.text;
Label2.Caption:='Записей в листе: '+IntToStr(StringGrid1.RowCount);
end;

end.
Изображения
Тип файла: jpg Безымянный21.jpg (141.2 Кб, 127 просмотров)
demon-sheff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bat zumm Общие вопросы Delphi 5 31.07.2010 12:10
.bat антипахмелин Помощь студентам 3 30.07.2010 23:17
Bat ЭдуардPhp Операционные системы общие вопросы 3 04.06.2010 19:33
*.bat hov Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 12.02.2010 19:11
*.bat Ivan_assm Помощь студентам 2 02.11.2007 13:26