📊CSV Import Templates
CSV Export Best Practices
Guidelines for generating high-quality CSV exports from your applications.
Explanation
Good CSV exports are properly formatted, encoded, and include helpful metadata.
Examples
Well-Formatted Export
Output
# Report: User Activity # Generated: 2024-12-17 14:30:00 UTC # Total Records: 150 # Filter: active=true, role=user userId,email,lastLogin,activityCount,status USR001,john@example.com,2024-12-15T10:30:00Z,45,active USR002,jane@example.com,2024-12-16T14:20:00Z,32,active
Code Examples
JavaScript Export Class
// Generate CSV export with best practices
class CSVExporter {
constructor(data, options = {}) {
this.data = data;
this.options = {
includeMetadata: true,
utf8BOM: true,
dateFormat: 'iso',
...options
};
}
export() {
const lines = [];
// Add metadata as comments
if (this.options.includeMetadata) {
lines.push(`# Report: ${this.options.reportName || 'Data Export'}`);
lines.push(`# Generated: ${new Date().toISOString()}`);
lines.push(`# Total Records: ${this.data.length}`);
lines.push('');
}
// Add headers
if (this.data.length > 0) {
const headers = Object.keys(this.data[0]);
lines.push(headers.join(','));
// Add data rows
this.data.forEach(record => {
const row = headers.map(header => {
let value = record[header];
// Format dates
if (value instanceof Date) {
value = value.toISOString();
}
// Escape CSV fields
return this.escapeField(value);
});
lines.push(row.join(','));
});
}
let csv = lines.join('\n');
// Add UTF-8 BOM for Excel
if (this.options.utf8BOM) {
csv = '\uFEFF' + csv;
}
return csv;
}
escapeField(value) {
const str = String(value ?? '');
if (str.includes(',') || str.includes('"') || str.includes('\n')) {
return '"' + str.replace(/"/g, '""') + '"';
}
return str;
}
download(filename) {
const csv = this.export();
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
link.click();
}
}
// Usage
const exporter = new CSVExporter(users, {
reportName: 'Active Users Report',
utf8BOM: true
});
exporter.download('users-export.csv');Try it Now
💡 Tips
- Always use UTF-8 encoding with BOM
- Include metadata as comment lines (#)
- Use ISO 8601 for dates
- Quote all fields containing special chars
- Provide meaningful filename (date-report-name.csv)
- Set appropriate Content-Disposition header
- Consider streaming for large datasets
- Document column meanings in separate file
- Include generation timestamp
- Validate export before sending to user
⚠️ Common Pitfalls
- Missing BOM causes encoding issues in Excel
- Large exports can timeout or crash browser
- Inconsistent date formats across columns
- Missing proper escaping breaks parsing
- Not handling null/undefined values
- Exposing sensitive data in exports