|
Запись данных в excel | ☑ | ||
---|---|---|---|---|
0
olgakrylova86
23.10.19
✎
11:34
|
Всем добрый день! В общем есть вот такой код:
&НаКлиенте Процедура Команда1(Команда) ИтоговыйФайл = "%USERPROFILE%\Desktop]art_2.xls"; Эксель = Новый COMОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open("%USERPROFILE%\Desktop\art_.xls"); Эксель.ScreenUpdating = 0; Эксель.Calculation = -4135; Лист = Книга.WorkSheets(1); RangeAll = Книга.ActiveSheet.UsedRange; КолВоСтрок = RangeAll.Rows.Count; УдаленнаяЧасть = ""; Для i = 1 По КолВоСтрок Цикл Модель = "Модель"; Длина = СтрДлина(Лист.Cells(i, 2).value); ПоискМодель = Найти(Лист.Cells(i, 2).value, Модель); Лист.Cells(i, 2).value = Mid(Лист.Cells(i, 2).value, ПоискМодель, Длина); Если i > КолВоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; Для j = 1 По КолВоСтрок Цикл Модель = Лист.Cells(j, 2).value; Длина = СтрДлина(Лист.Cells(j, 2).value); ПоискПробела = Найти(Модель, " "); Характеристика = Mid(Модель, ПоискПробела - 1 + ПоискПробела, Длина); Модель = СтрЗаменить(Модель, ШКХарактеристика, ""); Если j > КолВоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; Для k = 1 По КолВоСтрок Цикл Лист.Cells(k, 4).value = ШКХарактеристика; Лист.Cells(k, 3).value = ШКМодель; Лист.Cells(k, 1).NumberFormat="0"; Если k > КолВоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; Лист.UsedRange.Worksheet.Columns("B:B").Delete(-4159); Эксель.DisplayAlerts=0; Книга.SaveAs(ИтоговыйФайл,-4143); Книга.Close(); Эксель.DisplayAlerts=1; Эксель.Quit(); КонецПроцедуры Для чего он мне? Что бы разобрать колонку "B" Исходный вариант https://i.imgur.com/Hzj9vvx.png Но при сохранении данные записываються одинаковые Итоговый вариант https://i.imgur.com/Hzj9vvx.png Подскажите пожалуйта где у меня ошибка или чего не хватает! |
|||
1
olgakrylova86
23.10.19
✎
11:36
|
Приношу извинения вот скриншот итогового файла https://i.imgur.com/FP8MqVc.png
|
|||
2
evgeniy_n
23.10.19
✎
12:13
|
У Вас цикл по переменной k работает отдельно. когда ШКХарактеристика и ШКМодель уже определены в предыдущем цикле.
Надо, видимо, строки из цикла k вставить в предыдущий цикл (цикл по k не нужен). |
|||
3
evgeniy_n
23.10.19
✎
12:14
|
Или массивы используйте (для ШКХарактеристика и ШКМодель).
|
|||
4
Chum
23.10.19
✎
12:16
|
(0) ничего не смущает в полном имени файла итогового?
ИтоговыйФайл = "%USERPROFILE%\Desktop]art_2.xls"; Для сравнения полное имя файла исходного Книга = Эксель.WorkBooks.Open("%USERPROFILE%\Desktop\art_.xls"); |
|||
5
olgakrylova86
23.10.19
✎
12:19
|
(2) спасибо , да цикл с "k" не нужен
|
|||
6
olgakrylova86
23.10.19
✎
12:19
|
(4) а если ты еще пресмотришься то
Характеристика = Mid(Модель, ПоискПробела - 1 + ПоискПробела, Длина); Модель = СтрЗаменить(Модель, ШКХарактеристика, ""); Если j > КолВоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; Для k = 1 По КолВоСтрок Цикл Лист.Cells(k, 4).value = ШКХарактеристика; Лист.Cells(k, 3).value = ШКМодель; Лист.Cells(k, 1).NumberFormat="0"; Если k > КолВоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |