0 / 0 / 0
Регистрация: 03.10.2010
Сообщений: 31

Загрузить данные из Excel в StringGrid

17.08.2014, 20:44. Показов 1057. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При открытие файла в StingGride появляется только первая строчка таблицы из экселя, затем вылетает ошибка: "Could not convert variant of type(Dispatch) into type (String)".

Создавал тестовый файл эксель с несколькими столбцами и строками, там заполнял ячейки словами и цифрами. Программа нормально открывала, ошибок не было. Перенес из первой таблицы часть строк и столбцов в тестовую и опять программа показывает только первую строчку, вылетает такая же ошибка.

Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
unit UnitXLS;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGridXLS: TStringGrid;
    OpenDialogXLS: TOpenDialog;
    ButtonOpenXLS: TButton;
    procedure ButtonOpenXLSClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure Xls_Open(XLSFile:string; Grid:TStringGrid);
 const
  xlCellTypeLastCell = $0000000B;
var
  ExlApp, Sheet: {OLE}Variant;
  i, j, r, c:integer;
begin
  ExlApp := CreateOleObject('Excel.Application');
  ExlApp.Visible := false;
  ExlApp.Workbooks.Open(XLSFile);
  Sheet := ExlApp.Workbooks[ExtractFileName(XLSFile)].WorkSheets[1];
  Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
  r := ExlApp.ActiveCell.Row;
  c := ExlApp.ActiveCell.Column;
  Grid.RowCount:=r;
  Grid.ColCount:=c;
  for j:= 1 to r do
    for i:= 1 to c do begin
      try
        if not VarIsNull(sheet.cells[j,i]) then
          Grid.Cells[i-1,j-1]:= VarToStr(sheet.cells[j,i])
        else
          Grid.Cells[i-1,j-1]:= '';
      finally
      end;
    end;
  ExlApp.Quit;
  ExlApp := Unassigned;
  Sheet := Unassigned;
end;
 
 
procedure TForm1.ButtonOpenXLSClick(Sender: TObject);
begin
  If OpenDialogXLS.Execute then
   Xls_Open (OpenDialogXLS.FileName, StringGridXLS);
end;
 
end.
Помогите, не могу понять что делать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2014, 20:44
Ответы с готовыми решениями:

Загрузить данные из файла Excel в StringGrid через OpenDialog
Доброго времени суток! Нужно загрузить данные из Excel файла в StringGrid через OpenDialog. Из StringGrid в Excel получилось...

Загрузить в StringGrid таблицы из Excel
Ребята, помогите пожалуйста как сделать через stringgrid вот эти три таблицы.

Загрузить данные из stringgrid в memo
Добрый день, прошу помощи. Есть stringgrid заполненный данными, и есть форма, которая открывается при нажатии на любую строку если это 4...

1
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
22.08.2014, 15:53
MasterCraft, попробуй просто значение ячейки екселя присвоить ячейке стринггрида
без vartostr
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2014, 15:53
Помогаю со студенческими работами здесь

Данные из Excel файла загрузить в таблицу БД
Здравствуйте. может подскажете как одну штуку сделать: Работаю в microsoft Visual Basic 2010, подключил базу, вывел данные, вообщем всё как...

Загрузить данные из Excel в dataset keras
Ребята, здравствуйте! Подскажите пожалуйста из-за чего часть данных из Excel могут определяться как "None"? А часть данных...

Как загрузить данные из Excel в массив
Добрый день! Подскажите как загрузить диапазон ячеек excel в массив VBS? Чтобы потом его можно было преобразовывать уже в скрипте....

Хранить данные StringGrid в Excel
Народ, здравствуйте. Помогите пожалуйста написать код к моей программе. На одной из форм я должен иметь возможность ввести название...

А вот как бы мне загрузить данные в БД на сайте, используя Excel?
Задача - накормить БД свежим прайс-листом через веб-интерфейс используя Excel. Типа, нажимаем кнопку -> открывается лист Excell ->...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Хак домофона или как открыть дверь по номеру
yariko 25.06.2025
Забыли дома ключ. Не проблема. Можно открыть дверь домофона, просто позвонив на свой номер квартиры. Идея состоит в следующем. Внутрь трубки абонента встраивается контроллер, который по звонку сам. . .
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru