Kaydet (Commit) 9d3adaaa authored tarafından Jean-Pierre Ledure's avatar Jean-Pierre Ledure

Access2Base - OutputTo action - support encoding in csv files

Change-Id: Icc4a631d67c3d4acf67de1cb38018c37602a16eb
üst 5d8449cd
...@@ -621,7 +621,7 @@ Const cstThisSub = "Database.OutputTo" ...@@ -621,7 +621,7 @@ Const cstThisSub = "Database.OutputTo"
If IsMissing(pvTemplateFile) Then pvTemplateFile = "" If IsMissing(pvTemplateFile) Then pvTemplateFile = ""
If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function
If IsMissing(pvEncoding) Then pvEncoding = 0 If IsMissing(pvEncoding) Then pvEncoding = 0
If Not Utils._CheckArgument(pvEncoding, 7, _AddNumeric(), Array(0, acUTF8Encoding)) Then Goto Exit_Function If Not Utils._CheckArgument(pvEncoding, 7, _AddNumeric()) Then Goto Exit_Function
If IsMissing(pvQuality) Then pvQuality = acExportQualityPrint If IsMissing(pvQuality) Then pvQuality = acExportQualityPrint
If Not Utils._CheckArgument(pvQuality, 7, _AddNumeric(), Array(acExportQualityPrint, acExportQualityScreen)) Then Goto Exit_Function If Not Utils._CheckArgument(pvQuality, 7, _AddNumeric(), Array(acExportQualityPrint, acExportQualityScreen)) Then Goto Exit_Function
...@@ -674,7 +674,7 @@ Dim sOutputFormat As String, iTemplate As Integer, iOutputFile As Integer, bOutp ...@@ -674,7 +674,7 @@ Dim sOutputFormat As String, iTemplate As Integer, iOutputFile As Integer, bOutp
Case UCase(acFormatXLS), "XLSX" Case UCase(acFormatXLS), "XLSX"
bOutput = _OutputToCalc(oTable, sOutputFile, acFormatXLSX) bOutput = _OutputToCalc(oTable, sOutputFile, acFormatXLSX)
Case UCase(acFormatTXT), "TXT", "CSV" Case UCase(acFormatTXT), "TXT", "CSV"
bOutput = _OutputToCalc(oTable, sOutputFile, acFormatTXT) bOutput = _OutputToCalc(oTable, sOutputFile, acFormatTXT, pvEncoding)
End Select End Select
oTable.Dispose() oTable.Dispose()
...@@ -1010,7 +1010,7 @@ Error_Function: ...@@ -1010,7 +1010,7 @@ Error_Function:
End Function ' DFunction V1.1.0 End Function ' DFunction V1.1.0
REM ----------------------------------------------------------------------------------------------------------------------- REM -----------------------------------------------------------------------------------------------------------------------
Private Function _FilterOptionsDefault() As String Private Function _FilterOptionsDefault(ByVal plEncoding As Long) As String
' Return the default FilterOptions string for table/query export to csv ' Return the default FilterOptions string for table/query export to csv
Dim sFieldSeparator as string Dim sFieldSeparator as string
...@@ -1020,7 +1020,7 @@ Const cstTextDelimitor = """" ...@@ -1020,7 +1020,7 @@ Const cstTextDelimitor = """"
If _DecimalPoint() = "," Then sFieldSeparator = ";" Else sFieldSeparator = cstComma If _DecimalPoint() = "," Then sFieldSeparator = ";" Else sFieldSeparator = cstComma
_FilteroptionsDefault = Trim(Str(Asc(sFieldSeparator))) _ _FilteroptionsDefault = Trim(Str(Asc(sFieldSeparator))) _
& cstComma & Trim(Str(Asc(cstTextDelimitor))) _ & cstComma & Trim(Str(Asc(cstTextDelimitor))) _
& cstComma & Trim(Str(acUTF8Encoding)) _ & cstComma & Trim(Str(plEncoding)) _
& cstComma & "1" & cstComma & "1"
End Function ' _FilterOptionsDefault V1.4.0 End Function ' _FilterOptionsDefault V1.4.0
...@@ -1296,7 +1296,11 @@ Dim i As Integer, l As Long ...@@ -1296,7 +1296,11 @@ Dim i As Integer, l As Long
End Function ' _OutputStringToHTML V1.4.0 End Function ' _OutputStringToHTML V1.4.0
REM ----------------------------------------------------------------------------------------------------------------------- REM -----------------------------------------------------------------------------------------------------------------------
Private Function _OutputToCalc(poData As Object, ByVal psOutputFile As String, psFilter As String) As Boolean Private Function _OutputToCalc(poData As Object _
, ByVal psOutputFile As String _
, ByVal psFilter As String _
, Optional ByVal plEncoding As Long _
) As Boolean
' https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Database_Import ' https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Database_Import
' https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options ' https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options
...@@ -1306,6 +1310,7 @@ Dim oRange As Object, i As Integer, iCol As Integer, oColumns As Object ...@@ -1306,6 +1310,7 @@ Dim oRange As Object, i As Integer, iCol As Integer, oColumns As Object
If _ErrorHandler() Then On Local Error Goto Error_Function If _ErrorHandler() Then On Local Error Goto Error_Function
_OutputToCalc = False _OutputToCalc = False
If IsMissing(plEncoding) Then plEncoding = acUTF8Encoding
' Create a new OO-Calc-Document ' Create a new OO-Calc-Document
Set oCalcDoc = StarDesktop.LoadComponentFromURL( _ Set oCalcDoc = StarDesktop.LoadComponentFromURL( _
"private:factory/scalc" _ "private:factory/scalc" _
...@@ -1344,14 +1349,18 @@ Dim oRange As Object, i As Integer, iCol As Integer, oColumns As Object ...@@ -1344,14 +1349,18 @@ Dim oRange As Object, i As Integer, iCol As Integer, oColumns As Object
For i = 0 To iCol - 1 For i = 0 To iCol - 1
oColumns.getByIndex(i).OptimalWidth = True oColumns.getByIndex(i).OptimalWidth = True
Next i Next i
oCalcDoc.storeAsUrl(psOutputFile, Array( _
_MakePropertyValue("FilterName", psFilter) _
, _MakePropertyValue("Overwrite", True) _
))
Case Else Case Else
oCalcDoc.storeAsUrl(psOutputFile, Array( _
_MakePropertyValue("FilterName", psFilter) _
, _MakePropertyValue("FilterOptions", _FilterOptionsDefault(plEncoding)) _
, _MakePropertyValue("Overwrite", True) _
))
End Select End Select
oCalcDoc.storeAsUrl(psOutputFile, Array( _
_MakePropertyValue("FilterName", psFilter) _
, _MakePropertyValue("FilterOptions", _FilterOptionsDefault()) _
, _MakePropertyValue("Overwrite", True) _
))
oCalcDoc.close(False) oCalcDoc.close(False)
_OutputToCalc = True _OutputToCalc = True
......
...@@ -1243,7 +1243,7 @@ Const cstThisSub = "OutputTo" ...@@ -1243,7 +1243,7 @@ Const cstThisSub = "OutputTo"
If IsMissing(pvTemplateFile) Then pvTemplateFile = "" If IsMissing(pvTemplateFile) Then pvTemplateFile = ""
If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function
If IsMissing(pvEncoding) Then pvEncoding = 0 If IsMissing(pvEncoding) Then pvEncoding = 0
If Not Utils._CheckArgument(pvEncoding, 7, _AddNumeric(), Array(0, acUTF8Encoding)) Then Goto Exit_Function If Not Utils._CheckArgument(pvEncoding, 7, _AddNumeric()) Then Goto Exit_Function
If IsMissing(pvQuality) Then pvQuality = acExportQualityPrint If IsMissing(pvQuality) Then pvQuality = acExportQualityPrint
If Not Utils._CheckArgument(pvQuality, 7, _AddNumeric(), Array(acExportQualityPrint, acExportQualityScreen)) Then Goto Exit_Function If Not Utils._CheckArgument(pvQuality, 7, _AddNumeric(), Array(acExportQualityPrint, acExportQualityScreen)) Then Goto Exit_Function
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment