Member 14367500 Ответов: 1

Я хочу создать загружаемый файл excel из моего контроллера java SPRING MVC с помощью библиотеки APACHE POI


Please I need A source Code

import java.io.ByteArrayOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Set;
import java.util.Calendar;
import java.util.Date;
import java.util.*;
import java.util.TreeMap;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.Scanner;
import java.io.FileOutputStream;  
import java.util.Date;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.servlet.ModelAndView;

@RequestMapping(value="/excel", method=RequestMethod.GET)
 // public ResponseEntity<byte[]> poi(Model model, HttpServletRequest httpServletRequest, HttpServletResponse response) {
public  String poi(){
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Employee Data");
		



Map<String, Object[]> data = new TreeMap<String, Object[]>();
data.put("1", new Object[] {"ID", "NAME", "LASTNAME"});
data.put("2", new Object[] {1, "Amit", "Shukla"});
data.put("3", new Object[] {2, "Lokesh", "Gupta"});
data.put("4", new Object[] {3, "John", "Adwards"});
data.put("5", new Object[] {4, "Brian", "Schultz"});
		
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset)
{
XSSFRow row = sheet.createRow(rownum++);
Object [] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr)
{
XSSFCell cell = row.createCell(cellnum++);
if(obj instanceof String)
cell.setCellValue((String)obj);
else if(obj instanceof Integer)
cell.setCellValue((Integer)obj);
}
}	

try
{
FileOutputStream out = new FileOutputStream(new File("excel_demo.xlsx"));
workbook.write(out);
out.close();
System.out.println("excel_demo.xlsx write succesfuly ondisk.");			
}catch (Exception e) 
{e.printStackTrace();
}
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=excel-demo.xlsx");

 return ResponseEntity
 .ok()
 .headers(headers)
 .contentType(MediaType.APPLICATION_ALL)
 .body(outStream.toByteArray());
 return "candidate/excel";
}


Что я уже пробовал:

вышеупомянутый код-это то, что я пробовал hv, используя библиотеку apache POI в своем проекте.
это делается для того, чтобы создать файл Excel и вернуть его так, чтобы он был загружен браузером.

Richard MacCutchan

В чем же проблема?

Member 14367500

я не могу загрузить файл MS-Excel через мой компилятор

1 Ответов

Рейтинг:
0

Gerry Schmitz

Учитывая ваши тривиальные требования к данным, просто создайте CSV-файл и откройте его в Excel.

Как только ваши требования изменятся, вы можете рассмотреть более "сложные" варианты.

1, "Амит", "Шукла"
2, "Локеш", "Гупта"
3, "Джон", "Эдвардс"
4, "Брайан", "Шульц"