Jump to content
xt:Commerce Community Forum

Anführungszeichen beim Import


gerdk

Recommended Posts

Hallo,

Habe noch ein Problem mit den Texttrennern beim Importieren meiner Artikel.

Wir haben manche Artikel, die in der Beschreibung oder im Titel mit Anführungszeichen arbeiten ("). Selbst wenn ich jetzt als Texttrenner z.B. ~ oder ³ verwende (und das ebenfalls bei xtc so angebe!) stellt das Script immer ein \ vor das ". Was läuft da schief? Als Trennzeichen verwende ich ;

Beispiel: So sieht es dann im Shop aus: Text1 \"Text2\" Text3

Weiß jemand einen Rat?

Gruß Gerd

Link to comment
Share on other sites

Beispiel: So sieht es dann im Shop aus: Text1 \"Text2\" Text3
Das ist ein Fehler im import-Modul. Angehängt eine modifizierte import.php (als zip-Archiv) aus dem Supportforum - also nicht von mir. Die Datei admin/includes/classes/import.php damit ersetzen. Oder mit z.B. WinMerge einen Vergleich mit der Originaldatei machen und nur die Änderungen übernehmen.

tuvalu

Link to comment
Share on other sites

Hallo.

Super, vielen Dank, hat funktioniert.

Aber noch eine Frage. Wenn ich aus Excel heraus in eine CSV-Datei exportiere, dann macht er um Anführungszeichen in einem Titel ein weiteres Paar Anführungszeichen. Und beim Import der Artikel in XTC bleiben dann beide. Somit wird aus "text" dann ""text"". Kann man das auch irgendwie umgehen, ohne mit einem Editor die Datei zu bearbeiten, bevor man sie importiert?

Gruß Gerd

Link to comment
Share on other sites

Ich hab da mal ein Excel-Makro geschrieben, mittels welchem du CSV-Dateien aus Excel-Dateien schreiben kannst ...

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' ExportToTextFile

' This exports a sheet or range to a text file, using a

' user-defined separator character.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Sub ExportToTextFile(FName As String, _

Sep As String, SelectionOnly As Boolean, _

AppendData As Boolean)

Dim WholeLine As Variant

Dim FNum As Integer

Dim RowNdx As Long

Dim ColNdx As Integer

Dim StartRow As Long

Dim EndRow As Long

Dim StartCol As Integer

Dim EndCol As Integer

Dim CellValue As Variant

Dim tmpVal As Variant

Dim i As Integer

Application.ScreenUpdating = False

On Error GoTo EndMacro:

FNum = FreeFile

If SelectionOnly = True Then

With Selection

StartRow = .Cells(1).Row

StartCol = .Cells(1).Column

EndRow = .Cells(.Cells.Count).Row

EndCol = .Cells(.Cells.Count).Column

End With

Else

With ActiveSheet.UsedRange

StartRow = .Cells(1).Row

StartCol = .Cells(1).Column

EndRow = .Cells(.Cells.Count).Row

EndCol = .Cells(.Cells.Count).Column

End With

End If

If AppendData = True Then

Open FName For Append Access Write As #FNum

Else

Open FName For Output Access Write As #FNum

End If

For RowNdx = StartRow To EndRow

WholeLine = ""

For ColNdx = StartCol To EndCol

If Cells(RowNdx, ColNdx).Value = "" Then

'CellValue = Chr(34) & Chr(34)

CellValue = ""

Else

tmpVal = Mid(Cells(RowNdx, ColNdx).Value, 1) & ""

If (Len(tmpVal) > 200) Then

MsgBox tmpVal

MsgBox Mid(Cells(RowNdx, ColNdx).Value, 201), vbInformation, Len(Cells(RowNdx, ColNdx).Text)

tmpVal = ""

For i = 0 To Int(Len(Cells(RowNdx, ColNdx).Value) / 255)

tmpVal = tmpVal & Mid(Cells(RowNdx, ColNdx).Value, (i * 255) + 1, 255)

Next

MsgBox tmpVal, vbExclamation, "Mid-Test i=" & i & " - len(tmpVal)=" & Len(tmpVal)

End If

If InStr(tmpVal, """") > 0 Then

CellValue = "~" & Replace(tmpVal, """""", """") & "~"

Else

CellValue = tmpVal

End If

End If

WholeLine = WholeLine & CellValue & Sep

Next ColNdx

WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))

'WholeLine = Replace(WholeLine, """""", """")

Print #FNum, WholeLine

Next RowNdx

EndMacro:

On Error GoTo 0

Application.ScreenUpdating = True

Close #FNum

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' END ExportTextFile

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub DoTheExport()

ExportToTextFile "Test2.csv", "|", False, False

End Sub

-----------------

Einfach obigen vbCode in die Excel-Datei einfügen und das Makro "DoTheExport" ausführen - im oben angegebenen Fall wird eine Datei Test2.csv geschrieben mit dem Separator "|" und Texterkennungszeichen "~" (letzteres wird allerdings nur geschrieben, wenn tatsächlich notwendig) - das darf man anpassen :-) (nicht vergessen: entsprechende Importeinstellungen in xtCommerce-Admin konfigurieren)

Happy projects : Michael

Link to comment
Share on other sites

Super , vielen Dank, werde es morgen mal ausprobieren.

Eigentlich kann man hervorragend aus Access exportieren, aber leider werden da alle Zahlen auf 2 Stellen nach dem Komma gekürzt. Das ist leider blöd, wenn man Gewichte mit 3 Stellen hat. Vielleicht weiß da ja jemand einen Rat.

Gruß Gerd

Link to comment
Share on other sites

Hallo dekamerone.

War jetzt doch noch neugierig und habe es noch ausprobiert. Funktioniert gut, aber folgendes: Per Format habe ich den Verkaufspreis auf 4 Stellen nach dem Komma gestellt und über die Einstellungen von Excel, dass aus dem Komma ein Punkt wird. Wenn ich nun das Makro starte kommt es zu dem Ergebnis, dass in der Text2.csv wieder die 12 Stellen nach dem Komma sind, und auch der Punkt wird ignoriert und wieder das Komma gesetzt. Gibt es dafür noch eine Abhilfe? Ansonsten funktioniert es super.

Gruß Gerd

Link to comment
Share on other sites

Hallo Gerd,

ich glaube bei mir sind alle Excel-Felder mit dem Datentyp "Text" gesetzt ? - Ansonsten könnte man natürlich auf die Zell-Formatierung als Zahl testen und dann punktformatierte 4-stellige Zahlen ausgeben - kein Hexenwerk, aber nicht mehr jetzt.

Probierst du's erst mal mit der Zellformatierung?

Ausserdem könnte man statt Cells(RowNdx, ColNdx).Value Cells(RowNdx, ColNdx).Text schreiben ... das gibt den Zellinhalt vielleicht wie gesehen zurück (eigentlich ja, vbScript evtl. ...)

Happy projects und viel Erfolg : Michael

Link to comment
Share on other sites

  • 1 year later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...