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:
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
Both alternatives do not put \r\n in the output files, despite explicitly adding these characters with print #iNumA
, sLF
or result = result + sLF
.
How can I get this macro to print \r\n
on a Linux system?
The same question was asked at LibreOfficeForum.org but I got no answer. I believe it’s a bug, which I filed under Bug #99650 and got the advice to try it here.
Thank you for your help!
Stephan