Csv.Document

Sintassi

Csv.Document(
    source as any,
    optional columns as any,
    optional delimiter as any,
    optional extraValues as nullable number,
    optional encoding as nullable number
) as table

Informazioni

Restituisce il contenuto del documento CSV come tabella.

  • columns può essere Null, il numero di colonne, un elenco di nomi di colonna, un tipo di tabella o un record di opzioni.
  • delimiter può essere un singolo carattere, un elenco di caratteri o il valore "", che indica che le righe devono essere suddivise per spazi vuoti consecutivi. Impostazione predefinita: ",".
  • Vedere ExtraValues.Type per i valori supportati di extraValues.
  • encoding specifica il tipo di codifica del testo.

Se si specifica un record per columns (e delimiter, extraValuese encoding sono Null), è possibile fornire i campi di record seguenti:

  • Delimiter: un delimitatore di colonna a carattere singolo. Impostazione predefinita: ",".
  • Columns: può essere Null, il numero di colonne, un elenco di nomi di colonna o un tipo di tabella. Se il numero di colonne è minore di quello trovato nell'input, le colonne aggiuntive verranno ignorate. Se il numero di colonne è maggiore di quello trovato nell'input, le colonne aggiuntive saranno Null. Se non viene specificato, il numero di colonne verrà determinato da quanto trovato nell'input.
  • Encoding: codifica del testo del file. Impostazione predefinita: 65001 (UTF-8).
  • CsvStyle: specifica in che modo vengono gestite le virgolette.
    • CsvStyle.QuoteAfterDelimiter (impostazione predefinita): le virgolette in un campo sono significative solo immediatamente dopo il delimitatore.
    • CsvStyle.QuoteAlways: le virgolette in un campo sono sempre significative, indipendentemente dalla posizione in cui vengono visualizzate.
  • QuoteStyle: Specifica come vengono gestite le interruzioni di riga citate.
    • QuoteStyle.Csv (impostazione predefinita): le interruzioni di riga tra virgolette vengono considerate come parte dei dati, non come la fine della riga corrente.
    • QuoteStyle.None: tutte le interruzioni di riga vengono considerate come la fine della riga corrente, anche quando si verificano all'interno di un valore tra virgolette.
  • IncludeByteOrderMark: valore logico che indica se includere un byte Order Mark (BOM) all'inizio dell'output CSV. Se impostato su true, la distinta base viene scritta (ad esempio, UTF-8 BOM: 0xEF 0xBB 0xBF); se impostata su false, non viene incluso alcun BOM. Questa opzione è applicabile solo negli scenari di output. Il valore predefinito è false.
  • ExtraValues: fare riferimento ai ExtraValues.Type valori supportati di ExtraValues.

Esempio 1

Elaborare testo CSV con intestazioni di colonna.

Utilizzo

let
    csv = Text.Combine({"OrderID,Item", "1,Fishing rod", "2,1 lb. worms"}, "#(cr)#(lf)")
in
    Table.PromoteHeaders(Csv.Document(csv))

Risultato

Table.FromRecords({
    [OrderID = "1", Item = "Fishing rod"],
    [OrderID = "2", Item = "1 lb. worms"]
})

Esempio 2

Elaborare testo CSV con caratteri delimitatori multipli. In questo esempio, il terzo parametro specifica il modello di delimitatore #|# da usare anziché il valore predefinito.

Utilizzo

let
    csv = Text.Combine({"OrderID#|#Color", "1#|#Red", "2#|#Blue"}, "#(cr)#(lf)")
in
    Table.PromoteHeaders(Csv.Document(csv, null, "#|#"))

Risultato

Table.FromRecords({
    [OrderID = "1", Color = "Red"],
    [OrderID = "2", Color = "Blue"]
})

Esempio 3

Elaborare il testo CSV con un delimitatore personalizzato e un numero fisso di colonne.

Utilizzo

Csv.Document(
    "1|Barb#(cr)#(lf)2|Cal",
    [
        Delimiter = "|",
        Columns = 3
    ]
)

Risultato

Table.FromRecords({
    [Column1 = "1", Column2 = "Barb", Column3 = ""],
    [Column1 = "2", Column2 = "Cal", Column3 = ""]
})

Esempio 4

Elaborare testo CSV con un delimitatore personalizzato e un set di nomi di colonna personalizzati, trattando le interruzioni di riga incorporate tra virgolette come fine della riga corrente.

Utilizzo

Csv.Document(
    "1|Barb|""Smith#(cr)#(lf)2|Cal|Fisher",
    [
        Delimiter = "|",
        Columns = type table [ID = text, First Name = text, Last Name = text],
        QuoteStyle = QuoteStyle.None
    ]
)

Risultato

Table.FromRecords({
    [ID = "1", First Name = "Barb", Last Name = "Smith"],
    [ID = "2", First Name = "Cal", Last Name = "Fisher"]
})