AI Excel Generation
The AI Excel module of NiteMoon AI Platform uses natural language-driven intelligent report generation, allowing users to quickly create professional Excel reports through a conversational interface.
Key Features
- LLM-powered generation: Understand requirements and generate reports through large language models
- Conversational interface: Natural language interaction without learning complex formulas
- Template management: Support for saving and reusing report templates
- Multi-format export: Support for Excel, CSV, PDF, and other formats
Workflow
mermaid
graph LR
A[User Input] --> B[Intent Understanding]
B --> C[Data Extraction]
C --> D[Template Generation]
D --> E[Excel Generation]
E --> F[File Download]Use Cases
Financial Reports
User: Help me generate a financial report for this month, including revenue, expenses, and profit
AI: Sure, I will generate a financial report for you including:
- Revenue details
- Expense details
- Profit summaryData Analysis
User: Analyze this sales data and generate a monthly trend chart
AI: I will analyze the sales data and generate:
- Monthly sales trend chart
- Product sales distribution
- Year-over-year growth rateBusiness Statistics
User: Compile this month's order data, categorized by region
AI: I will generate order statistics categorized by region:
- Order count by region
- Order amount by region
- Regional proportion analysisTemplate Management
Template Definition
java
@Entity
public class ExcelTemplate {
@Id
private Long id;
private String name; // Template name
private String description; // Template description
private String category; // Category
private String prompt; // Generation prompt
private String structure; // Table structure
private Map<String, Object> config; // Configuration
}Built-in Templates
| Template Name | Purpose | Description |
|---|---|---|
| Financial Report | Financial Analysis | Revenue, expense, and profit statistics |
| Sales Report | Sales Analysis | Sales trends, product analysis |
| Inventory Report | Inventory Management | Inventory statistics, alert reminders |
| Personnel Report | Human Resources | Personnel statistics, attendance analysis |
| Project Report | Project Management | Progress tracking, cost analysis |
Code Examples
Excel Generation Service
java
@Service
public class AiExcelService {
public ExcelFile generate(String userRequest) {
// 1. Understand user intent
ExcelIntent intent = llmService.parseIntent(userRequest);
// 2. Extract data requirements
DataRequirement requirement = llmService.extractRequirement(intent);
// 3. Query data
Map<String, Object> data = dataService.query(requirement);
// 4. Generate Excel structure
ExcelStructure structure = llmService.generateStructure(intent, data);
// 5. Generate Excel file
return excelGenerator.generate(structure, data);
}
}Conversational Generation
java
@Service
public class ExcelChatService {
public ExcelChatResponse chat(String sessionId, String message) {
// Get conversation history
List<ChatMessage> history = chatHistoryService.getHistory(sessionId);
// Generate response
String response = llmService.chat(history, message);
// Check if Excel generation is needed
if (isExcelRequest(response)) {
ExcelFile file = aiExcelService.generate(response);
return ExcelChatResponse.builder()
.message("Excel has been generated")
.file(file)
.build();
}
return ExcelChatResponse.builder()
.message(response)
.build();
}
}Template Service
java
@Service
public class ExcelTemplateService {
public ExcelTemplate create(String name, String prompt, String structure) {
ExcelTemplate template = new ExcelTemplate();
template.setName(name);
template.setPrompt(prompt);
template.setStructure(structure);
return templateRepository.save(template);
}
public ExcelFile generateFromTemplate(Long templateId, Map<String, Object> data) {
ExcelTemplate template = templateRepository.findById(templateId);
return excelGenerator.generate(template.getStructure(), data);
}
}Excel Generator
Generator Interface
java
public interface ExcelGenerator {
// Generate Excel file
ExcelFile generate(ExcelStructure structure, Map<String, Object> data);
// Generate Excel file (with template)
ExcelFile generate(String templatePath, Map<String, Object> data);
// Export as CSV
byte[] exportCsv(ExcelFile excelFile);
// Export as PDF
byte[] exportPdf(ExcelFile excelFile);
}Apache POI Implementation
java
@Service
public class PoiExcelGenerator implements ExcelGenerator {
@Override
public ExcelFile generate(ExcelStructure structure, Map<String, Object> data) {
Workbook workbook = new XSSFWorkbook();
// Create header row
Sheet sheet = workbook.createSheet(structure.getSheetName());
Row headerRow = sheet.createRow(0);
List<String> headers = structure.getHeaders();
for (int i = 0; i < headers.size(); i++) {
headerRow.createCell(i).setCellValue(headers.get(i));
}
// Fill data
List<Map<String, Object>> rows = (List<Map<String, Object>>) data.get("rows");
for (int i = 0; i < rows.size(); i++) {
Row dataRow = sheet.createRow(i + 1);
Map<String, Object> row = rows.get(i);
for (int j = 0; j < headers.size(); j++) {
dataRow.createCell(j).setCellValue(
String.valueOf(row.get(headers.get(j)))
);
}
}
// Convert to file
return convertToFile(workbook);
}
}Best Practices
- Clarify requirements: Describe report requirements in as much detail as possible
- Use templates: Reuse templates for frequently used reports
- Data validation: Check data accuracy after generation
- Format optimization: Adjust column widths, styles, and other formatting to make reports more polished
- Regular updates: Update templates as business needs change