https://bugs.documentfoundation.org/show_bug.cgi?id=99650

            Bug ID: 99650
           Summary: Control line endings with print statement
           Product: LibreOffice
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: medium
         Component: BASIC
          Assignee: [email protected]
          Reporter: [email protected]

I have a Basic macro which writes the contents of a spreadsheet into a text
file. This macro was developed on a LO installed on Windows. Now I switched to
Linux and have a problem with the line endings in the generated file.

The file must have Windows line endings (\r\n or chr(13)+chr(10)), because it
is used in other programs which insist on these line endings.

I tried a couple of approaches to save the \r\n line endings on a Linux
installation:

--8<---
sub ExportAreaToFile
  ' This prints the range "Sheet1.A1:C3" with two different methods into two
different text files.

  dim oSheet as object
  dim datarangeAddress as object
  dim sCell as string
  dim sTab as string
  dim sLF as string
  dim i, j as long
  ' ALTERNATIVE B:
  dim result as string

  sTab = chr(9)
  sLF = chr(13) + chr(10)

  ' Open file descriptors
  iNumA = FreeFile
  iNumB = FreeFile
  Open "output_A.txt" for Output as #iNumA
  Open "output_B.txt" for Output as #iNumB

  ' Get range
  oSheet = ThisComponent.Sheets.getByName("Sheet1")
  datarangeAddress = oSheet.getCellRangeByName("A1:C3").RangeAddress()

  ' Loop over our range
  for j = datarangeAddress.StartRow to datarangeAddress.EndRow
    for i = datarangeAddress.StartColumn to datarangeAddress.EndColumn
      sCell = oSheet.getCellByPosition(i, j).string
      ' ALTERNATIVE A:
      print #iNumA, sCell; sTab;
      ' ALTERNATIVE B:
      result = result + sCell + sTab
    next i
    ' ALTERNATIVE A:
    print #iNumA, sLF
    ' ALTERNATIVE B:
    result = result + sLF
  next j

  ' ALTERNATIVE B:
  print #iNumB, result

  close #iNumA
  close #iNumB
--8<---

Both alternatives do not put \r\n in the output files, despite explicitly
adding these characters with print #iNumA, sLF or result = result + sLF.

See also http://en.libreofficeforum.org/node/13243, where I asked how I can
control the line endings.

Stephan

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to