Выгрузка данных в CSV

Тема в разделе "Lotus - Программирование", создана пользователем Serduko, 17 янв 2012.

  1. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Выгружаю, автоматом переносит строки, как можно исправить?
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Const Path = "D:\"
    Const sc = ";"

    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim v As NotesView
    Dim col As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim temp As NotesDocument
    Dim arr(1 To 57) As String
    Dim csvstr As String
    Dim i As Integer
    Dim rtitem As NotesRichTextItem
    Dim Stream As NotesStream

    Set db = s.Currentdatabase
    Set v = db.Getview("ByNum3")
    'Set col = v.Getalldocumentsbykey("RKCK", true)
    'Set doc = col.Getfirstdocument()
    Set doc = v.Getfirstdocument()

    Set temp = db.Createdocument()
    Set rtitem = New NotesRichTextItem(temp, "list")

    While Not doc Is Nothing

    arr(1) = doc.CorFrom(0)
    .....
    .....
    arr(52) = doc.Data_reg(0)

    For i=1 To UBound(arr)
    If i <> UBound(arr) Then
    csvstr = csvstr + arr(i) + sc
    Else
    csvstr = csvstr + arr(i)
    End If
    Next

    Call rtitem.AddNewline(1)
    Call rtitem.AppendText(csvstr)

    Set doc = v.Getnextdocument(doc)
    Wend

    Set stream=s.CreateStream
    Call Stream.Open(Path + db.Filename + ".csv")
    Call Stream.WriteText(rtitem.text)
    Call Stream.Close
    Call temp.Remove(True)
    вопрос решен - отказался от ричтекста
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    такие вещи проще решать через forall с именем поля определённым вне цикла
    Код (LotusScript):
    forall el in arr
    csvstr = csvstr + doc.GetItemValue (el)(0) + sc
    end forall

    Добавлено: и списсок поле инициализировать из строки, типа:
    s={fldName1;....;fldNameN}
    arr=split (s,{;})

    Добавлено: а последний ";" отрезать после цикла типа Left (cvsstr;Len(cvsstr)-1)
    что касается перевода каретки - notesStream.WriteText( text$ , EOL_CRLF)
    читать в хэлпе
    а выводить из РТ - считаю извращением - пишите параллельно
     
  3. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Благодарю
     
  4. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    А как убрать, переход в строке? Т.е. в некоторых филдах есть переход на следующую строку, что соответственно портит файл.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    а менять-то на что? и в каких полях такое? (тип) может просто нерпавильно выволите содержимое? (код где)
     
  6. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Поля типа "текст", вывожу правильно, ошибки быть не может. Сдвигается(т.е. переходит на следующую с середины) только одна строка в файле.
     
  7. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Решил таким образом:

    Код (LotusScript):
    ForAll a In arr
    If StrLeft(a,strEnter,1) <> "" Then
    If StrRight(a,strEnter,1) <> "" Then
    a = StrLeft(a,strEnter,1)+ " " + StrRight(a,strEnter,1)
    Else
    a = StrLeft(a,strEnter,1)
    End If
    End If
    End ForAll
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Не пробовали a = Replace(a, strEnter, " ")?
     
  9. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Можно, чуть уменьшит код. :facepalm:
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    зависит от того, что текс м.б. РТ, и как получали текст из поля
    и вводили туды переводы кареток или нет...
    а ваще в нотусне перевод каретки - Chr(10)
     
Загрузка...

Поделиться этой страницей