springboot+vue导出excel
时间: 2023-09-03 08:15:05 浏览: 201
您可以使用Apache POI库来创建和导出Excel文件,并使用Spring Boot和Vue.js框架来实现这一点。
首先,您需要添加以下依赖项到您的Spring Boot项目的pom.xml文件中:
```
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
```
然后,您需要创建一个Java类来处理Excel文件的创建和导出。以下是一个示例Java类:
```
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Component;
@Component
public class ExcelExporter {
public void exportToExcel(List<MyObject> data, String filename) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// Create header row
Row headerRow = sheet.createRow(0);
String[] headers = { "Header1", "Header2", "Header3" };
CellStyle headerCellStyle = workbook.createCellStyle();
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerFont.setColor(IndexedColors.WHITE.getIndex());
headerCellStyle.setFont(headerFont);
headerCellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex());
headerCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
for (int i = 0; i < headers.length; i++) {
String header = headers[i];
Row row = sheet.getRow(0);
if (row == null) {
row = sheet.createRow(0);
}
row.createCell(i).setCellValue(header);
row.getCell(i).setCellStyle(headerCellStyle);
}
// Create content rows
int rowNum = 1;
for (MyObject obj : data) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(obj.getField1());
row.createCell(1).setCellValue(obj.getField2());
row.createCell(2).setCellValue(obj.getField3());
}
// Auto-size columns
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
// Write file to disk
FileOutputStream outputStream = new FileOutputStream(filename);
workbook.write(outputStream);
workbook.close();
}
}
```
在这个示例类中,我们首先创建一个XSSFWorkbook对象,然后创建一个名为“Sheet1”的工作表。我们使用createRow()方法创建标题行和内容行,并使用setCellValue()方法设置单元格中的值。我们还使用autoSizeColumn()方法自动调整每列的宽度,使其适合内容。最后,我们使用FileOutputStream将工作簿写入磁盘。
在您的Spring Boot控制器类中,您可以注入ExcelExporter类,并在必要时调用exportToExcel()方法来创建和导出Excel文件。例如:
```
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private ExcelExporter excelExporter;
@GetMapping("/export")
public void exportToExcel() throws IOException {
List<MyObject> data = new ArrayList<>();
// Add data to list
excelExporter.exportToExcel(data, "my_excel_file.xlsx");
}
}
```
在Vue.js中,您可以使用axios库从Spring Boot后端调用控制器的导出方法。例如:
```
import axios from 'axios';
export default {
methods: {
exportToExcel() {
axios.get('/export')
.then(response => {
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'my_excel_file.xlsx';
link.click();
})
.catch(error => {
console.log(error);
});
}
}
}
```
在这个示例中,我们使用axios.get()方法调用Spring Boot控制器的导出方法。该方法返回Excel文件的字节数组,我们将其包装在Blob对象中,并使用createObjectURL()方法创建一个链接。我们创建一个链接元素,设置download属性为文件名,并使用click()方法模拟用户单击链接以下载文件。
希望这可以帮助您创建和导出Excel文件。
阅读全文