Partilhar via


Ler ficheiros Excel

Importante

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

Pode ingerir, analisar e consultar ficheiros Excel para cargas de trabalho em lote e streaming usando o suporte integrado ao formato de ficheiros Excel. Infere automaticamente o esquema e os tipos de dados, eliminando a necessidade de bibliotecas externas ou conversões manuais de ficheiros. Esta funcionalidade permite uma ingestão fluida tanto a partir de uploads locais como de armazenamento na cloud.

Principais características

  • Ler diretamente ficheiros .xls e .xlsx usando APIs SQL e Spark do Databricks.
  • Carregue diretamente os ficheiros .xls e .xlsx usando a interface de utilizador Adicionar Dados. Consulte Carregar ficheiros para o Azure Databricks.
  • Leia qualquer folha de um ficheiro multi-folha.
  • Especifique limites ou intervalos exatos das células.
  • Inferir automaticamente o esquema, cabeçalhos e tipos de dados.
  • Ingerir fórmulas avaliadas.
  • Use o Auto Loader para streaming estruturado de ficheiros Excel.

Pré-requisitos

Databricks Runtime 17.1 ou superior.

Crie ou modifique uma tabela na interface

Pode usar a interface Criar ou modificar tabelas para criar tabelas a partir de ficheiros Excel. Comece por carregar um ficheiro Excel ou selecionar um ficheiro Excel a partir de um volume ou de uma localização externa. Escolha a folha, ajuste o número de linhas de cabeçalho e, opcionalmente, especifique um intervalo de células. A interface suporta a criação de uma única tabela a partir do ficheiro e da folha selecionados.

Consultar ficheiros Excel

Pode consultar os seus ficheiros Excel usando APIs batch (spark.read) e streamingspark.readstream () do Spark. Podes escolher inferir automaticamente o esquema ou especificar o teu próprio esquema para analisar os ficheiros Excel. Por defeito, o analisador lê todas as células a partir da célula superior esquerda até à célula inferior direita não vazia na primeira folha. Para ler uma folha ou intervalo de células diferente, use a opção dataAddress.

Pode consultar a lista de folhas num ficheiro Excel definindo a operation opção para listSheets.

Opções de análise em Excel

As seguintes opções estão disponíveis para analisar ficheiros Excel:

Opção de fonte de dados Description
dataAddress O endereço do intervalo de células para ler na sintaxe do Excel. Se não for especificado, o analisador lê todas as células válidas da primeira folha.
  • "" ou omitido: Lê todos os dados da primeira planilha.
  • "MySheet!C5:H10": Lê o intervalo de C5 a H10 da folha nomeada MySheet.
  • "C5:H10": Lê o intervalo de C5 a H10 da primeira folha.
  • "Sheet1!A1:A1": Lê apenas a célula A1 de Sheet1.
  • "Sheet1": Lê todos os dados de Sheet1.
  • "'My Sheet!?>'!D5:G10": Lê de D5 a G10 a partir de My Sheet!?>. Anexe o nome da folha com '.
headerRows O número de linhas iniciais no ficheiro Excel a serem tratadas como linhas de cabeçalho e lidas como nomes de colunas. Quando dataAddress é especificado, headerRows aplica-se às linhas de cabeçalho dentro desse intervalo de células. Os valores suportados são 0 e 1. O padrão é 0, caso em que os nomes das colunas são gerados automaticamente ao adicionar o número da coluna a _c (por exemplo: _c1, _c2, _c3, ...).
Examples:
  • dataAddress: "A2:D5", headerRows: "0": Infere nomes das colunas como _c1..._c4. Lê a primeira linha de dados da linha 2: A2 até D2.
  • dataAddress: "A2:D5", headerRows: "1": Define nomes de colunas como valores de célula na linha 2: A2 para D2. Lê a primeira linha de dados a partir da linha 3: A3 até D3.
operation Indica a operação a realizar no livro de exercícios do Excel. O padrão é readSheet, que lê dados de uma folha. A outra operação suportada é listSheets, que devolve a lista de folhas no livro de exercícios. Para a listSheets operação, o esquema devolvido é a struct com os seguintes campos:
  • sheetIndex:Longo
  • sheetName: cadeia
timestampNTZFormat String de formato personalizado para um valor de carimbo temporal (armazenado como string no Excel) sem uma zona horária que siga o formato especificado do padrão de data-hora. Isto aplica-se a valores de cadeia lidos como TimestampNTZType. Padrão: yyyy-MM-dd'T'HH:mm:ss[.SSS].
dateFormat Cadeia de formato de data personalizada que segue o padrão de formato de data-hora. Isto aplica-se a valores de cadeia lidos como Date. Padrão: yyyy-MM-dd.

Examples

Encontre exemplos de código para ler ficheiros Excel usando o conector incorporado Lakeflow Connect.

Leia ficheiros Excel usando uma leitura em lote do Spark

Pode ler um ficheiro Excel a partir de armazenamento na cloud (por exemplo, S3, ADLS) usando spark.read.excel. Por exemplo:

# Read the first sheet from a single Excel file or from multiple Excel files in a directory
df = (spark.read.excel(<path to excel directory or file>))

# Infer schema field name from the header row
df = (spark.read
       .option("headerRows", 1)
       .excel(<path to excel directory or file>))

# Read a specific sheet and range
df = (spark.read
       .option("headerRows", 1)
       .option("dataAddress", "Sheet1!A1:E10")
       .excel(<path to excel directory or file>))

Leia ficheiros Excel usando SQL

Podes usar a read_files função de valores de tabela para ingerir ficheiros Excel diretamente usando SQL. Por exemplo:

-- Read an entire Excel file
CREATE TABLE my_table AS
SELECT * FROM read_files(
  "<path to excel directory or file>",
  schemaEvolutionMode => "none"
);

-- Read a specific sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
  "<path to excel directory or file>",
  format => "excel",
  headerRows => 1,
  dataAddress => "'Sheet1'!A2:D10",
  schemaEvolutionMode => "none"
);

Transmitir ficheiros Excel usando o Auto Loader

Pode transmitir ficheiros Excel usando o Auto Loader definindo cloudFiles.format para excel. Por exemplo:

df = (
  spark
    .readStream
    .format("cloudFiles")
    .option("cloudFiles.format", "excel")
    .option("cloudFiles.inferColumnTypes", True)
    .option("headerRows", 1)
    .option("cloudFiles.schemaLocation", "<path to schema location dir>")
    .option("cloudFiles.schemaEvolutionMode", "none")
    .load(<path to excel directory or file>)
)
df.writeStream
  .format("delta")
  .option("mergeSchema", "true")
  .option("checkpointLocation", "<path to checkpoint location dir>")
  .table(<table name>)

Ingerir ficheiros Excel usando COPY INTO

CREATE TABLE IF NOT EXISTS excel_demo_table;

COPY INTO excel_demo_table
FROM "<path to excel directory or file>"
FILEFORMAT = EXCEL
FORMAT_OPTIONS ('mergeSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');

Analisar folhas Excel complexas não estruturadas

Para folhas Excel complexas e não estruturadas (por exemplo, múltiplas tabelas por folha, ilhas de dados), o Databricks recomenda extrair os intervalos de células de que precisa para criar os seus DataFrames Spark usando as dataAddress opções. Por exemplo:

df = (spark.read.format("excel")
       .option("headerRows", 1)
       .option("dataAddress", "Sheet1!A1:E10")
       .load(<path to excel directory or file>))

Folhas de lista

Podes listar as folhas num ficheiro Excel usando a listSheets operação. O esquema devolvido é a struct com os seguintes campos:

  • sheetIndex:Longo
  • sheetName: cadeia

Por exemplo:

Python

# List the name of the Sheets in an Excel file
df = (spark.read.format("excel")
       .option("operation", "listSheets")
       .load(<path to excel directory or file>))

SQL

SELECT * FROM read_files("<path to excel directory or file>",
  schemaEvolutionMode => "none",
  operation => "listSheets"
)

Limitações

  • Ficheiros protegidos por palavra-passe não são suportados.
  • Apenas uma linha de cabeçalhos é suportada.
  • Os valores das células fundidas apenas preenchem a célula no canto superior esquerdo. As células filhas restantes são definidas para NULL.
  • A transmissão de ficheiros Excel usando o Auto Loader é suportada, mas a evolução do esquema não. Deve definir schemaEvolutionMode="None" explicitamente.
  • "Folha de Cálculo XML Aberta Estrita (Strict OOXML)" não é suportada.
  • A execução de macros em .xlsm ficheiros não é suportada.
  • A ignoreCorruptFiles opção não é suportada.

FAQ

Encontre respostas para perguntas frequentes sobre o conector Excel no Lakeflow Connect.

Posso ler todas as folhas de uma vez?

O parser lê apenas uma folha de um ficheiro Excel de cada vez. Por defeito, lê a primeira folha. Pode especificar uma folha diferente usando essa dataAddress opção. Para processar múltiplas folhas, primeiro recupere a lista de folhas definindo a operation opção para listSheets, depois itere sobre os nomes das folhas e leia cada uma fornecendo o seu nome na dataAddress opção.

Posso ingerir ficheiros Excel com layouts complexos ou múltiplas tabelas por folha?

Por defeito, o analisador lê todas as células Excel desde a célula superior esquerda até à célula inferior direita não vazia. Pode especificar um intervalo de células diferente usando essa dataAddress opção.

Como são tratadas as fórmulas e as células fundidas?

As fórmulas são ingeridas como os seus valores calculados. Para células fundidas, apenas o valor no canto superior esquerdo é mantido (células filhas são NULL).

Posso usar a ingestão do Excel no Auto Loader e em trabalhos de streaming?

Sim, pode transmitir ficheiros Excel usando cloudFiles.format = "excel". No entanto, a evolução de esquemas não é suportada, por isso deve definir "schemaEvolutionMode" para "None".

É suportado o Excel com proteção por palavra-passe?

Não. Se esta funcionalidade for crítica para os seus fluxos de trabalho, contacte o seu representante de conta Databricks.