Habilita a gravação dos dados auxiliares de processamento no Banco de Dados ao invés de utilizar a memória do sistema nos casos de geração de tabelas no formato "Tabela Xlsx", reduzindo drasticamente o consumo de memória.
- Disponível a partir da Lib 20230227;
- Uma vez que os dados de processamento são gravados no BD ao invés da memória, uma performance inferior é esperada em relação a geração com dados em memória;
- A definição deste método deve ser realizada antes que seja realizada qualquer inserção de dados no objeto (ex.: AddRow);
- Sua utilização exige ambiente previamente preparado, visto a necessidade de gravação dos dados no BD;
- Funcional apenas para ambientes com versão do DbAccess 22.1.1.0 ou superior.
Sintaxe
lHabilitou := FwMsExcelXlsx():SetWriteinDB(<lWriteinDb>, <nLimit>)
Parâmetros
Nome | Tipo | Descrição | Default | Obrigatório |
---|---|---|---|---|
lWriteinDb | Lógico | Informar .T. para habilitar a gravação no BD | X | |
nLimit | Numérico | Indica o limite de registros para disparar o Bulk Insert. | 200.000 |
Retorno
Tipo | Descrição |
---|---|
Lógico | Informa se a funcionalidade foi habilitada com sucesso. |
Importante
Considerações sobre o uso do parâmetro <nLimit>:
- Para reduzir o impacto de performance, a gravação no banco de dados ocorre por Bulk Insert, por padrão os registros são gravados em blocos de 200.000 registros (células);
- Por limitação do SQLite, a inserção ocorre registro a registro gerando impacto de performance;
- Quanto maior o numero de registros, melhor será a performance neste modo porém com maior consumo de memória e custo para o BD.
Exemplo Implementação
User Function TESTE() Local oExcel := FwMsExcelXlsx():New() Local lWriteDb := .T. //Habilita dados de processamento no BD e com Bulk ocorrendo com até 200 mil registros. lWriteDb := oExcel:SetWriteinDb(.T., 200000) If !lWriteDb conout("Não foi possível habilitar o recurso de dados em disco, o processamento consumirá a memória do servidor." EndIf lRet := oExcel:IsWorkSheet("WorkSheet1") oExcel:AddworkSheet("WorkSheet1") lRet := oExcel:IsWorkSheet("WorkSheet1") oExcel:AddTable ("WorkSheet1","Table1") oExcel:AddColumn("WorkSheet1","Table1","Col1",1,1,.F., "999.9") oExcel:AddColumn("WorkSheet1","Table1","Col2",2,2,.F., "999.99") oExcel:AddColumn("WorkSheet1","Table1","Col3",3,3,.F., "999.999") oExcel:AddColumn("WorkSheet1","Table1","Col4",1,1,.T., "999.9999") oExcel:AddColumn("WorkSheet1","Table1","Col5",1,1,.T., "999.99999") oExcel:AddColumn("WorkSheet1","Table1","Col6",1,1,.T., "999") oExcel:AddRow("WorkSheet1","Table1",{11.1,12.11,13.111,14.1111, 14.12345, 12.35}) oExcel:AddRow("WorkSheet1","Table1",{21,22,23,24}) oExcel:AddRow("WorkSheet1","Table1",{31,32,33,34}) oExcel:AddRow("WorkSheet1","Table1",{41,42,43,44}) oExcel:SetFont("arial") oExcel:SetFontSize(20) oExcel:SetItalic(.T.) oExcel:SetBold(.T.) oExcel:SetUnderline(.T.) oExcel:AddworkSheet("WorkSheet2") oExcel:AddTable("WorkSheet2","Table1") oExcel:AddColumn("WorkSheet2","Table1","Col1",1, 1) oExcel:AddColumn("WorkSheet2","Table1","Col2",2, 2) oExcel:AddColumn("WorkSheet2","Table1","Col3",3, 3) oExcel:AddColumn("WorkSheet2","Table1","Col4",1, 4) oExcel:AddColumn("WorkSheet2","Table1","Col5",1) oExcel:AddRow("WorkSheet2","Table1",{"11",12,13,stod("20121212"), .F.}) oExcel:AddRow("WorkSheet2","Table1",{"21",22,23,stod("20121212"), .T.}) oExcel:AddRow("WorkSheet2","Table1",{"31",32,33,stod("20121212"), .F.}) oExcel:AddRow("WorkSheet2","Table1",{"41",42,43,stod("20121212"), .T.}) oExcel:AddRow("WorkSheet2","Table1",{"51",52,53,stod("20121212"), .F.}) oExcel:Activate() oExcel:GetXMLFile("TESTE.xlsx") oExcel:DeActivate() Return
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas