Um sistema completo para migrar planilhas Excel personalizadas para um ambiente web seguro, com controle de acesso, processamento de fórmulas e geração de relatórios.
Este sistema permite importar planilhas Excel, transformá-las em formulários web interativos e disponibilizá-las para usuários autorizados, enquanto mantém a funcionalidade das fórmulas originais. Os dados inseridos ficam armazenados em um banco de dados central, permitindo consultas, histórico e relatórios personalizados.
- Importação de Planilhas Excel: Suporte para arqui 8000 vos .xlsx e .xls com extração automática de estrutura e fórmulas
- Autenticação e Autorização: Sistema de login seguro com diferentes níveis de acesso (admin e usuário comum)
- Formulários Dinâmicos: Criação automática de formulários web baseados na estrutura da planilha original
- Processamento de Fórmulas: Execução dos cálculos originais das planilhas Excel no ambiente web
- Armazenamento Centralizado: Banco de dados SQL para armazenar todos os dados inseridos pelos usuários
- Histórico e Relatórios: Visualização do histórico de dados inseridos e geração de relatórios
- Interface Responsiva: Design adaptável para diferentes dispositivos e tamanhos de tela
- Backend: Python 3.x, Flask
- ORM: SQLAlchemy
- Banco de Dados: SQLite (desenvolvimento), PostgreSQL (produção)
- Autenticação: Flask-Login
- Processamento de Excel: Pandas, Openpyxl
- Frontend: HTML5, CSS3, JavaScript, Bootstrap 5
- Templates: Jinja2
- Python 3.8 ou superior
- pip (gerenciador de pacotes Python)
- Ambiente virtual (recomendado)
-
Clone o repositório:
git clone https://github.com/seu-usuario/excel-web-app.git cd excel-web-app
-
Crie e ative um ambiente virtual:
python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
Instale as dependências:
pip install -r requirements.txt
-
Configure as variáveis de ambiente (opcional):
# Windows set FLASK_ENV=development # Linux/Mac export FLASK_ENV=development
-
Execute a aplicação:
python app.py
-
Acesse a aplicação no navegador:
http://localhost:5000
-
Faça login com o usuário administrador padrão:
Email: admin@example.com Senha: admin123
Para ambientes de produção, edite o arquivo config.py
ajustando as seguintes configurações:
- Altere
SECRET_KEY
para uma string aleatória e segura - Configure
SQLALCHEMY_DATABASE_URI
para apontar para seu banco de dados de produção - Defina
SESSION_COOKIE_SECURE
eREMEMBER_COOKIE_SECURE
comoTrue
se estiver usando HTTPS
excel_web_app/
│
├── app.py # Arquivo principal da aplicação Flask
├── config.py # Configurações da aplicação
├── requirements.txt # Dependências do projeto
│
├── static/ # Arquivos estáticos
│ ├── css/
│ │ ├── main.css # Estilos principais
│ │ ├── admin.css # Estilos da área administrativa
│ │ └── forms.css # Estilos específicos para formulários
│ ├── js/
│ │ └── main.js # JavaScript principal
│ └── img/
│
├── templates/ # Templates HTML do Flask
│ ├── base.html # Template base
│ ├── login.html # Página de login
│ ├── dashboard.html # Dashboard principal
│ ├── planilha.html # Visualização/edição de planilha
│ ├── relatorios.html # Lista de relatórios
│ ├── ver_relatorio.html # Visualizar um relatório específico
│ │
│ └── admin/ # Templates da área administrativa
│ ├── dashboard.html # Dashboard admin
│ ├── usuarios.html # Gerenciar usuários
│ ├── novo_usuario.html # Criar novo usuário
│ ├── editar_usuario.html # Editar usuário
│ ├── planilhas.html # Gerenciar planilhas
│ └── importar_planilha.html # Importar planilha
│
├── uploads/ # Pasta para upload temporário de arquivos
│
├── models/ # Modelos de banco de dados
│ ├── __init__.py
│ ├── user.py # Modelo de usuário
│ ├── planilha.py # Modelo de planilha
│ └── dados_planilha.py # Modelo de dados de planilha
│
└── modules/ # Módulos Python da aplicação
├── __init__.py
├── auth.py # Autenticação e gerenciamento de usuários
├── excel_parser.py # Parser de planilhas Excel
├── formula_translator.py # Tradutor de fórmulas Excel para Python
└── data_processor.py # Processamento de dados
- Senhas armazenadas com hash seguro usando
werkzeug.security
- Proteção contra CSRF em formulários
- Validação de entrada em todos os formulários
- Controle de acesso baseado em autenticação e autorização
- Sessões criptografadas
- Proteção contra download não autorizado de planilhas originais
- Faz login no sistema com credenciais de administrador
- Acessa o painel administrativo
- Importa planilhas Excel através do formulário de importação
- Gerencia usuários (criar, editar, excluir)
- Monitora o uso do sistema através do dashboard administrativo
- Recebe credenciais de acesso do administrador
- Faz login no sistema
- Visualiza as planilhas disponíveis no dashboard
- Seleciona uma planilha para preencher
- Insere os dados no formulário web
- Salva os dados (cálculos são processados automaticamente)
- Acessa o histórico e relatórios dos seus dados inseridos
O sistema converte fórmulas Excel em código Python executável, mantendo a funcionalidade original:
- Extração: As fórmulas são extraídas da planilha Excel durante a importação
- Tradução: Convertidas para equivalentes em Python usando o módulo
formula_translator.py
- Aplicação: Quando o usuário insere dados, as fórmulas são aplicadas para calcular automaticamente os resultados
- Armazenamento: Tanto os dados inseridos quanto os resultados calculados são armazenados no banco de dados
- Suporte limitado para funções Excel complexas ou personalizadas
- Não há suporte para macros VBA
- Formatação visual limitada comparada ao Excel original
- Suporte limitado para fórmulas entre planilhas diferentes do mesmo arquivo
Execute os testes unitários com:
python -m unittest discover tests
- Exportação de dados para Excel/CSV
- Suporte para gráficos e visualizações
- Personalização de temas e cores
- API REST para integração com outros sistemas
- Notificações por email
- Comentários e colaboração em tempo real
- Suporte para upload em lote de múltiplas planilhas
- Auditoria e logs de atividades detalhados
Contribuições são bem-vindas! Por favor, siga estas etapas:
- Faça fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade
) - Implemente suas alterações
- Execute os testes para garantir que nada foi quebrado
- Faça commit das suas alterações (
git commit -m 'feat: Adiciona nova funcionalidade'
) - Faça push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ por Paulo Roberto