| |
|
|
| | Выгружаю его в OpenOffice
Потом загружаю его обратно
Группа товаров - выглядит как объединение нескольких ячеек в строке
а товары там несколько отдельных ячеек в строке
наименование, цена, количество
=================================
Как же при загрузке отличить строку группы от строки товар????
Поле идентификатор не хочу вносить - из за шаловливых рук пользователей | |
| |
| |
| |
|
|
| | у вас ячейка в группе пустая
ну - у товара есть цена и даже если она не прописана то она (цена) равна 0,00
а у группы эта ячейка пустая
вот и ловите ее
(во второй строке - где дата точки кажется лишние)
Добавлено
или же ориентируйтесь по цвету ячейки (у Вас группы покрашены в голубенький цвет) | |
| |
| |
| |
 53 Кб. |
|
| | Спасибо за совет!!!
группы могут перекрасить
при вводевручную новой строки
цену фолочи могут не поставить..
хотя можно строго настрого приказать....нооо | |
| |
| |
| |
|
|
| | это они могут
пусть красят группы в любой цвет кроме белого
сравнивать с номером белого если белый то не группа
Добавлено
при загрузке двигаться по столбцу названий и спрашивать имена ячеек если просто ячейка то товар а если диапазон то группа
я имел в виду как у Экселя Cells(1,1).Address | |
| |
| |
| |
|
|
| | даа, спасибки....
я так и хотел, но не знаю как в Опене отличить диапазон от недиапазон вот в чем вопросон.....  | |
| |
| |
| |
|
|
| | пока нашёл вот что Свойство Merge объектов Cell и CellRange, оно read-write.
теперь - как этим воспользоваться 
При выполнении Delphi выдает ошибку о несовпадении типов
If OC.Sheets[0].Cell[i,j].Merge Then
Begin
|
| |
| |
| |
| |
|
|
| | merge - это объединить- команда к исполнению
а вам нужно получить свойство
по этому if в данном случае не пролезет
(опен офиса я не знаю - по этому могу только предполагать )
вот если бы можно было получить имя (адрес) выделенного диапазона (ячейки) все бы упростилось | |
| |
| |
| |
|
|
| | Да, но
Merge объектов Cell и CellRange, оно
| |
| |
| |
| |
|
|
| | Час - уважаемый
не зацикливаетесь на одной функции merge
есть другие свойства | |
| |
| |
| |
|
|
| | Спасибки!!!!
БУМ искать........
чё та кроме нас никто не присоединился
С опенофисом - мало хто дружит - однако........  | |
| |
| |
| |
|
|
| | в опене всё наподобеее тока вот так
Dim nEndCol As Integer
Dim oCursor As Object
Dim aAddress As Variant
Set OOO_Range = OOO_Sheet.getCellRangeByName("A1:A1")
Set oCursor = OOO_Sheet.createCursorByRange(OOO_Range)
oCursor.GotoEndOfUsedArea (True)
Set aAddress = oCursor.RangeAddress
почемутта всегда 8 показывет
nEndCol = aAddress.EndColumn | |
| |
| |
|
|
| |
|
|
| | Чета мне кажется что вот так должно быть
Set OOO_Range = OOO_Sheet.getCellByPosition(0, 0)
Set aAddress = OOO_Range.RangeAddress
Это к сообщению в 20:27 | |
| |
| |
| |
|
|
| | Даа так и есть
Dim aAddress As Variant
Set OOO_Range = OOO_Sheet.getCellByPosition(0, 4)
Set aAddress = OOO_Range.RangeAddress
MsgBox aAddress.EndColumn
|
ответ 4 | |
| |
| |
| |
|
|
| | Ну вот и здорово....
теперь когда есть диапазон
достаточно (возможно что достаточно) выдернуть последние символы текстовой строки (т.е. получить номер последнего столбца диапазона) и радостно сравнить его с образцом и если да то счастливо предположить чо енто ячейка обозначает группу | |
| |
| |
| |
|
|
| | Как Вы ето себе представляете в плане кода????  | |
| |
| |
| |
 25 Кб. |
|
| | Ну если на екселе то вот так | |
| |
| |
| |
|
|
| |
Sub Макрос1()
' Макрос1 Макрос
' Макрос записан 22.12.2009 (Snipe)
Dim asd As String
For i = 1 To 40
Cells(i, 1).Select
asd = Selection.Address
If InStr(1, asd, ":") > 0 Then
If Mid(asd, InStr(1, asd, ":") + 2, 1) = "G" Then
Cells(i, 8) = "Группа"
Else
Cells(i, 8) = "Какой-то мудак объединил ячейки"
End If
End If
Next i
Cells(1, 1).Select
End Sub
|
только двоеточий на листе я не нашёл  | |
| |
| |
| |
|
|
| | час - там изначально было другое слово | |
| |
| |
| |
|
|
| | address возвращает имя ячейки или имя диапазона ячеек
хитрость в том что при обращении через Cells т.е якобы обращаемся к одной ячейке
однако если ячейки объединены то при выделении (select) выделяется не одна ячейка к которой обращаемся а диапазон объединенных ячеек
(для примера имеем диапазон Range("A1:g1") если обратиться Cells(1.1).address то получим "A1" а если сначала Cells(1,1).Select а а потом Selection.Address то получим $A$1:$G$1
вот это : я и ловил)
однако все это справедливо для Excel | |
| |
| |
| |
|
|
| | Спасибо!!!!
Бум посмотреть........  | |
| |
| |
| |
|
|
| |
Скопировал - как есть  | |
| |
| |
|
|