2

Я новичок в Excel и CSV-файлы.

У меня есть файл Excel со следующей структурой ... http://cl.ly/Rdkp

user_login  user_email  user_pass   first_name  last_name   display_name    role
Some Name   schmied@eu.com      Some    Name        subscriber

Вы можете увидеть реальную структуру на скриншоте, размещенном выше.

Однако мне нужно экспортировать эти данные в виде CSV-файла со следующей структурой ...

"user_login","user_email","user_pass","first_name","last_name","display_name","role"
"johndoe","john.doe@localhost.localdomain",,"John","Doe","John Doe","administrator"

Таким образом, это означает, что мне нужно обернуть все мои данные в таблицах Excel в кавычки "" и разделить их запятой.

Я на Mac и в настоящее время использую числа, где я не могу найти возможность экспортировать через запятую только с ; в качестве разделителя. Я также мог бы использовать Excel.

Любая идея, как сделать то, что мне нужно. Во-первых, мне интересно, как я могу заключить каждую ячейку в кавычки, чтобы она соответствовала желаемому выходному формату.

Заранее спасибо, Мэтт

1 ответ1

1

Это не мое решение, так как я нашел это в чужой статье, доступной здесь:http://www.markinns.com/articles/full/export_excel_csvs_with_double_quotes

Похоже, единственный метод - использовать макрос VB, который фактически проверяет и добавляет двойные кавычки по мере необходимости. Я проверил код, запустив его, и когда вы запустите код, он предложит вам сохранить файл CSV сразу, а содержимое файла CSV будет иметь двойные кавычки по мере необходимости.

Sub CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
ListSep = Application.International(xlListSeparator)
  If Selection.Cells.Count > 1 Then
    Set SrcRg = Selection
  Else
    Set SrcRg = ActiveSheet.UsedRange
  End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
  CurrTextStr = ìî
For Each CurrCell In CurrRow.Cells
  CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
  CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .