-
У меня возникает ошибка при импорте данных с Excel. Точнее, не верно передаются данные. Одна из колонок Excel содержит данные (1 байт). При импорте код символа в Excel не совпадает с кодом символа в Delphi...
Delphi использую Ord()
(Символы с кодами 142...150 импортруются как символ с номером 63)
в Excele для проверки Code("") (или КодСимв...).
И еще попутно один вопрос, как определить в ячейке какая часть текста выделена жирным шрифтом
Заранее благодарен, Владимир
-
> Одна из колонок Excel содержит данные (1 байт)
Это как ?
-
Одна колонка шириной 1 байт ....
-
С каких пор ширина стала измеряться в байтах ?
Эдак и до измерения траффика в миллиметрах можно докатиться)
-
Хорошо. В колонке находится текст, длиной в 1 байт. Так понятнее ?
-
Длинной в один символ, а в байт... да и показать как импортируешь думаешь не надо? Типа тут народ на столько свои телепатические возможности развил, что сразу скажет где ошибка?
-
> Так понятнее ?
Так понятнее.
Однако и длина текста в байтах не измеряется.
А с чего ты так уверен, что в ячейке имеенно текстовое, а не, скажем, числовое значение ?
И вообще, показывай код импорта ...
-
> В колонке находится текст
Значение находится не в колонке, а в ячейке. И по барабану, в какой колонке находится эта ячейка.
-
Symb : Char;
.....
.....
RangeMatrix := XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value;
.....
For I := 4 To X Do
Begin
Line:='';
Symb := RangeMatrix[I,13];
.....
End;
-
И что ?
Вопросы что ли видишь в результате ?
-
В Excele есть символы с кодами 141-149...(через фунцию КодСимв определял)
после импорта у меня почти все символы импортируюются с номером 63...
(проверял через функцию Ord(Symb)...)
Что-то с кодировкой связано...
Я могу, конечно, создать еще одну колоночку программно и прописать там формулу с кодом символа нужной колонки и импортировть потом это число, но коряво так получится...
-
Пробуй юникод:
Symb : WideChar;
-
Спасибо большое, Сергей. Работает...
И еще один вопрос, если не трудно будет ответить...
Как узнать какая подстрока в тексте ячейки выделена Bold...
If WorkSheet.Range['Ñ11'].Characters[3, 1].Font.Bold
Then ShowMessage('Bold')
Else ShowMessage('No');
Так правильно будет ? ()
-
Наверно ...
Пробуй !
-
WorkSheet.Range['Ñ11'].Characters[3, 1].Font.Bold
Memo1.Font.Style=[fsBold];