准備
1.需要一個 json 數據數組,格式如下
[
{
"screenWidth": 1280,
"trackState": 1
},
{
"screenWidth": 1280,
"trackState": 1
},
{
"screenWidth": 1280,
"trackState": 1
},
{
"screenWidth": 1280,
"trackState": 1
}
]
2.工具包(操作JSON)
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.8</version>
</dependency>
轉為 excel 並下載
1.導入依賴
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
2. json 轉 excel
/**
* json 轉 excel
* @param jsonArray
* @return
* @throws IOException
*/
public static HSSFWorkbook jsonToExcel(JSONArray jsonArray) throws IOException {
Set<String> keys = null;
// 創建HSSFWorkbook對象
HSSFWorkbook wb = new HSSFWorkbook();
// 創建HSSFSheet對象
HSSFSheet sheet = wb.createSheet("sheet0");
String str = null;
int roleNo = 0;
int rowNo = 0;
List<JSONObject> jsonObjects = jsonArray.toList(JSONObject.class);
// 創建HSSFRow對象
HSSFRow row = sheet.createRow(roleNo++);
// 創建HSSFCell對象
//標題
keys = jsonObjects.get(0).keySet();
for (String s : keys) {
HSSFCell cell = row.createCell(rowNo++);
cell.setCellValue(s);
}
rowNo = 0;
for (JSONObject jsonObject : jsonObjects) {
row = sheet.createRow(roleNo++);
for (String s : keys) {
HSSFCell cell = row.createCell(rowNo++);
cell.setCellValue(jsonObject.getStr(s));
}
rowNo = 0;
}
return wb;
}
3.下載
@GetMapping("/index/dataDownload/excel")
@ResponseBody
public Result exportExcel(String ip, String name, HttpServletResponse response) {
try{
//此處為你的json數組
HSSFWorkbook sheets = jsonToExcel()
// 配置文件下載
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
// 下載文件能正常顯示中文
response.setHeader("Content-Disposition", "attachment;filename=data.xls");
OutputStream os = response.getOutputStream();
sheets.write(os);
sheets.close();
os.close();
return null;
} catch (Exception e) {
e.printStackTrace();
return new Result(500, e.getMessage());
}
}
json 轉為 csv 並 下載
1.導包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
2.轉換並下載
@GetMapping("/index/dataDownload/csv")
@ResponseBody
public Result exportCsv(String ip, String name, HttpServletResponse response) {
try{
// 配置文件下載
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
// 下載文件能正常顯示中文
response.setHeader("Content-Disposition", "attachment;filename=data.csv");
OutputStream os = response.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "GBK");
// 此處替換為你的 json 數組
List<JSONObject> list = clusterService.exportCsv(ip, name);
Set<String> set = list.get(0).keySet();
List<String> keys = new ArrayList<>(set);
String[] strings = keys.toArray(new String[keys.size()]);
CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(strings);
CSVPrinter csvPrinter = new CSVPrinter(osw, csvFormat);
Iterator<JSONObject> iterator = list.iterator();
while(iterator.hasNext()) {
Map<String, String> map = new HashMap<>();
JSONObject next = iterator.next();
StringBuilder str = new StringBuilder();
for(String key : keys) {
// str.append(next.getStr(key)).append(",");
csvPrinter.print(next.getStr(key));
}
// str = new StringBuilder(str.substring(0, str.length() - 1));
csvPrinter.printRecord();
}
csvPrinter.flush();
csvPrinter.close();
return null;
} catch (Exception e) {
e.printStackTrace();
return new Result(500, e.getMessage());
}
}