난잡한 기사를 많이 읽은 후 한눈에 이해할 수 있는 간단하고 폭력적인 기사를 작성했습니다. 테이블 스타일을 코드로 정의할 수 있는 것이 많지 않습니다.
날짜 형식이 문자열 형식으로 저장되어 있는 경우 데이터베이스로 내보낼 때 한 번 변환해야 합니다. 직접 내보내기 형식이 잘못되었습니다. Excel 테이블은 매개 변수를 전달하기 위해 get 메서드를 사용하여 내보내기 때문입니다. 내보낸 데이터에 대해 중국어 퍼지 쿼리를 사용하려면 get을 사용하여 매개변수를 전달하면 중국어 문자가 깨질 수 있습니다.
해결책:
프런트 엔드는 URLEncoder.encode(전달된 매개변수, "utf-8");
배경을 다시 디코딩해야 합니다: URLDecoder.decode(수신된 매개변수, "utf- 8”);@RequestMapping(value = "outPutExcel", method = RequestMethod.GET) @ResponseBody public void outPutExcel( HttpServletResponse response,String officeid, String sonid,String nameorphone,String beginTime, String endTime,String option) { String nString = ""; try { if (nameorphone != null && nameorphone != "") { //对前端传的参数解码 nString = URLDecoder.decode(nameorphone,"UTF-8"); } } catch (UnsupportedEncodingException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } response.reset(); //设置浏览器下载的格式,并以当前时间的毫秒数命名 response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls"); response.setContentType("application/msexcel"); List<PurchaseSum> list = purchaseService.selectPCSum(officeid, sonid, nString, beginTime, endTime, option); if (list == null && list.isEmpty()) { throw new NullPointerException("导出数据源为空"); } HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("sheet0"); HSSFRow rows; HSSFCell cells; //设置表格第一行的列名 // 获得表格第一行 rows = sheet.createRow(0); // 根据需要给第一行每一列设置标题 cells = rows.createCell(0); cells.setCellValue("客户姓名"); cells = rows.createCell(1); cells.setCellValue("客户电话"); cells = rows.createCell(2); cells.setCellValue("下单日期"); cells = rows.createCell(3); cells.setCellValue("订单号"); cells = rows.createCell(4); cells.setCellValue("所属分公司"); cells = rows.createCell(5); cells.setCellValue("签单人"); cells = rows.createCell(6); cells.setCellValue("品名"); cells = rows.createCell(7); cells.setCellValue("型号"); cells = rows.createCell(8); cells.setCellValue("颜色"); cells = rows.createCell(9); cells.setCellValue("尺寸"); cells = rows.createCell(10); cells.setCellValue("材质"); cells = rows.createCell(11); cells.setCellValue("已采购数量(件)"); cells = rows.createCell(12); cells.setCellValue("采购单价"); cells = rows.createCell(13); cells.setCellValue("采购总价"); cells = rows.createCell(14); cells.setCellValue("已出库(件)"); //循环数据库查出来的数据集,对应每一列赋值 //此处list.size()本不应该-1,因为同事在list集合里追加了另一条数据,导致报错故将其去除 for (int i = 0; i < list.size()-1; i++) { rows = sheet.createRow(i + 1); cells = rows.createCell(0); cells.setCellValue(list.get(i).getCustomerName()); cells = rows.createCell(1); cells.setCellValue(list.get(i).getPhone()); //对日期格式进行转换 cells = rows.createCell(2); String dateString = list.get(i).getPlaceOrderTime().toString(); Date date = null; try { date = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(dateString); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); cells.setCellValue(sdf.format(date)); cells = rows.createCell(3); cells.setCellValue(list.get(i).getOrderNumber()); cells = rows.createCell(4); cells.setCellValue(list.get(i).getOfficeName()); cells = rows.createCell(5); cells.setCellValue(list.get(i).getUsername()); cells = rows.createCell(6); cells.setCellValue(list.get(i).getProductName()); cells = rows.createCell(7); cells.setCellValue(list.get(i).getType()); cells = rows.createCell(8); cells.setCellValue(list.get(i).getColor()); cells = rows.createCell(9); cells.setCellValue(list.get(i).getSize()); cells = rows.createCell(10); cells.setCellValue(list.get(i).getTexture()); cells = rows.createCell(11); cells.setCellValue(list.get(i).getPurchasedNumber()); cells = rows.createCell(12); cells.setCellValue(list.get(i).getPurchaseprice()); cells = rows.createCell(13); cells.setCellValue(list.get(i).getPurchasePriceSun()); cells = rows.createCell(14); cells.setCellValue(list.get(i).getOutlibraryNumber()); } try { OutputStream oStream = response.getOutputStream(); wb.write(oStream); oStream.flush(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
위 내용은 Java는 데이터베이스에서 쿼리된 데이터를 Excel 테이블로 전송하는 것을 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于设计模式的相关问题,主要将装饰器模式的相关内容,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版
시각적 웹 개발 도구
