RAD Studio 10.1 Berlin.
Работаю с excel - xlsx. Компонент xlsreadwriteii 5.
Все данные считываются, но возникла проблема. xlsreadwriteii 5 не может определить пустую ячейку.
При задании условия. Например - если в ячейке текст 1, делай одно, а если пустая - делай другое.
Excel - Формат ячеек общий. Числа сохранены как текст.
Так вот текст 1 он (xlsreadwriteii 5) находит, а пустые ячейки нет.
XLS:=TXLSReadWriteII5.Create(nil);
XLS.Filename:=ExtractFilePath(Application.ExeName)+'file.xlsx';
XLS.Read;
XLS[0].CalcDimensions;
//Еще код.....
//Читаем содержимое ячейки в переменную
NUMBER:=XLS[0].AsString[NUMBER_column,row];
//Узнаем длину строки
Form1.Memo1.lines.add('Длина строки NUMBER='+inttostr(Length(NUMBER)));
if (NUMBER='') then Form1.Memo1.lines.add('Пусто');
if (NUMBER='1') then Form1.Memo1.lines.add('Единица');
Если 1 будет Единица. Тут всё понятно.
Если пустая ячейка, то ничего не будет выведено. Не "ловит." (
Узнаю длину строки с пустой ячейкой. Длина строки 1. Т.е. ячейка пустая, а длина строки 1!
Такое поведение программы, без изменения excel файла.
Давайте теперь изменим excel файл.
Открываю excel файл. Руками изменяю ячейку с пустой на 1. Сохраняю.
Программа "видит" 1. Что очевидно.
Но теперь программа видит и все пустые ячейки в этом ряду.
Я изменил одну, и это как то повлияло на "видимость" всех пустых ячеек ниже.
Т.е. теперь программа работает корректно. Но я не менял формат ячеек. Смотрю ещё раз - Формат ячеек общий. Числа сохранены как текст.
Руками снова изменяю ячейку с 1 на пустую. Сохраняю.
Программа "видит" и определяет пустую ячейку (и все ниже, разумеется). Длина строки 0. Все как и должно быть.
Итого.
Без ручного открытия excel файла программа ( xlsreadwriteii 5) не определяет пустые ячейки.
С открытием excel файла руками и любым изменением ячейки и сохранением файла, программа определяет все пустые ячейки.
Такая ситуация возникает с xlsreadwriteii 5. С OLE Excel такого не замечал.
Как понять что ячейка пустая (xlsreadwriteii 5)?
Почему происходит такой глюк?