From 9d3adaaac8839b71f3960ebebbf5fa193f906219 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Ledure Date: Sun, 13 Dec 2015 11:29:49 +0100 Subject: Access2Base - OutputTo action - support encoding in csv files Change-Id: Icc4a631d67c3d4acf67de1cb38018c37602a16eb --- wizards/source/access2base/Database.xba | 29 +++++++++++++++++++---------- wizards/source/access2base/DoCmd.xba | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) (limited to 'wizards') diff --git a/wizards/source/access2base/Database.xba b/wizards/source/access2base/Database.xba index 81a233ef318b..05e7335b0a49 100644 --- a/wizards/source/access2base/Database.xba +++ b/wizards/source/access2base/Database.xba @@ -621,7 +621,7 @@ Const cstThisSub = "Database.OutputTo" If IsMissing(pvTemplateFile) Then pvTemplateFile = "" If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function 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 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 Case UCase(acFormatXLS), "XLSX" bOutput = _OutputToCalc(oTable, sOutputFile, acFormatXLSX) Case UCase(acFormatTXT), "TXT", "CSV" - bOutput = _OutputToCalc(oTable, sOutputFile, acFormatTXT) + bOutput = _OutputToCalc(oTable, sOutputFile, acFormatTXT, pvEncoding) End Select oTable.Dispose() @@ -1010,7 +1010,7 @@ Error_Function: End Function ' DFunction V1.1.0 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 Dim sFieldSeparator as string @@ -1020,7 +1020,7 @@ Const cstTextDelimitor = """" If _DecimalPoint() = "," Then sFieldSeparator = ";" Else sFieldSeparator = cstComma _FilteroptionsDefault = Trim(Str(Asc(sFieldSeparator))) _ & cstComma & Trim(Str(Asc(cstTextDelimitor))) _ - & cstComma & Trim(Str(acUTF8Encoding)) _ + & cstComma & Trim(Str(plEncoding)) _ & cstComma & "1" End Function ' _FilterOptionsDefault V1.4.0 @@ -1296,7 +1296,11 @@ Dim i As Integer, l As Long End Function ' _OutputStringToHTML V1.4.0 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/Filter_Options @@ -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 _OutputToCalc = False + If IsMissing(plEncoding) Then plEncoding = acUTF8Encoding ' Create a new OO-Calc-Document Set oCalcDoc = StarDesktop.LoadComponentFromURL( _ "private:factory/scalc" _ @@ -1344,14 +1349,18 @@ Dim oRange As Object, i As Integer, iCol As Integer, oColumns As Object For i = 0 To iCol - 1 oColumns.getByIndex(i).OptimalWidth = True Next i + oCalcDoc.storeAsUrl(psOutputFile, Array( _ + _MakePropertyValue("FilterName", psFilter) _ + , _MakePropertyValue("Overwrite", True) _ + )) Case Else + oCalcDoc.storeAsUrl(psOutputFile, Array( _ + _MakePropertyValue("FilterName", psFilter) _ + , _MakePropertyValue("FilterOptions", _FilterOptionsDefault(plEncoding)) _ + , _MakePropertyValue("Overwrite", True) _ + )) End Select - oCalcDoc.storeAsUrl(psOutputFile, Array( _ - _MakePropertyValue("FilterName", psFilter) _ - , _MakePropertyValue("FilterOptions", _FilterOptionsDefault()) _ - , _MakePropertyValue("Overwrite", True) _ - )) oCalcDoc.close(False) _OutputToCalc = True diff --git a/wizards/source/access2base/DoCmd.xba b/wizards/source/access2base/DoCmd.xba index ff3d5ae6b01c..1b6e481f360b 100644 --- a/wizards/source/access2base/DoCmd.xba +++ b/wizards/source/access2base/DoCmd.xba @@ -1243,7 +1243,7 @@ Const cstThisSub = "OutputTo" If IsMissing(pvTemplateFile) Then pvTemplateFile = "" If Not Utils._CheckArgument(pvTemplateFile, 6, vbString) Then Goto Exit_Function 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 Not Utils._CheckArgument(pvQuality, 7, _AddNumeric(), Array(acExportQualityPrint, acExportQualityScreen)) Then Goto Exit_Function -- cgit