java导出数据库到excel,java读取excel表格数据到MySQL数据库
看了很多文章乱糟糟的,自己写了个简单暴力的一眼就懂,没有那么多花里胡哨,表格样式可以通过代码定义,我嫌麻烦
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
注意日期格式如果是以线类型的方式存到数据库的导出时要转换一次,直接导出格式不对
因为导出超过表格用的是得到方式传参,所以如果需要对导出的数据用中文模糊查询,此时用得到传参会出现中文乱码
解决办法:
前端对需要传的中文参数进行一次编码URLEncoder.encode(传参,“utf-8”);
后台需要再次解码:URLDecoder.decode(接收的参数,“utf-8”);
@ request mapping(value= output xcel ,method=RequestMethod .获取)
@ResponseBody
公共void输出xcel(http servlet响应响应,字符串officeid,
String sonid,String nameorphone,String beginTime,String endTime,String option) {
string n string=
尝试{
如果(nameorphone!=null nameorphone!=) {
//对前端传的参数解码
nString=URL解码器。解码(名奥芬,‘UTF-8’);
}
} catch(UnsupportedEncodingException E2){
//TODO自动生成的捕捉块
E2。printstacktrace();
}
回应。reset();
//设置浏览器下载的格式,并以当前时间的毫秒数命名
回应。设置标题(内容-处置,附件;filename= system。当前时间毫秒() .xls’);
回应。设置内容类型(“应用程序/ms excel”);
listpuchersum list=购买服务。selectpcsum(office id,sonid,nString,beginTime,endTime,option);
if (list==null list.isEmpty()) {
抛出新的NullPointerException(“导出数据源为空);
}
hssf工作簿WB=new hssf workbook();
hssf工作表=WB。创建工作表(“工作表0”);
高速钢(high-speed steel的缩写)行;
造血干细胞;
//设置表格第一行的列名
//获得表格第一行
行数=工作表。创建行(0);
//根据需要给第一行每一列设置标题
单元格=行。创建单元格(0);
cells.setCellValue(客户姓名);
单元格=行。创建单元格(1);
cells.setCellValue(客户电话);
单元格=行。创建单元格(2);
cells.setCellValue(下单日期);
单元格=行。创建单元格(3);
cells.setCellValue(订单号);
单元格=行。创建单元格(4);
cells.setCellValue(所属分公司);
单元格=行。创建单元格(5);
cells.setCellValue(签单人);
单元格=行。创建单元格(6);
cells.setCellValue(品名);
单元格=行。创建单元格(7);
cells.setCellValue(型号);
单元格=行。创建单元格(8);
cells.setCellValue(颜色);
单元格=行。创建单元格(9);
cells.setCellValue(尺寸);
单元格=行。创建单元格(10);
cells.setCellValue(材质);
单元格=行。创建单元(11);
cells.setCellValue(已采购数量(件));
单元格=行。创建单元(12);
cells.setCellValue(采购单价);
单元格=行。创建单元(13);
cells.setCellValue(采购总价);
单元格=行。创建单元(14);
cells.setCellValue(已出库(件));
//循环数据库查出来的数据集,对应每一列赋值
//此处list.size()本不应该-1,因为同事在目录集合里追加了另一条数据,导致报错故将其去除
for(int I=0;我列出。size()-1;i ) {
行数=工作表。创建行(i1);
单元格=行。创建单元格(0);
cells.setCellValue(list.get(i)).获取customername());
单元格=行。创建单元格(1);
cells.setCellValue(list.get(i)).getPhone());
//对日期格式进行转换
单元格=行。创建单元格(2);
String dateString=list.get(i).getPlaceOrderTime().toString();
日期日期=空
尝试{
date=新的简单日期格式( EEE MMM DD HH:mm:ss Z yyyy ,区域设置。英国)。parse(dateString);
} catch (ParseException e1) {
//TODO自动生成的捕捉块
E1。printstacktrace();
}
简单日期格式SDF=新建简单日期格式( yyyy-MM-DD );
细胞。setcellvalue(SDF。格式(日期));
单元格=行。创建单元格(3);
cells.setCellValue(list.get(i)).getOrderNumber());
单元格=行。创建单元格(4);
cells.setCellValue(list.get(i)).get office name());
单元格=行。创建单元格(5);
cells.setCellValue(list.get(i)).getUsername()).
单元格=行。创建单元格(6);
cells.setCellValue(list.get(i)).获取产品名称());
单元格=行。创建单元格(7);
cells.setCellValue(list.get(i)).getType());
单元格=行。创建单元格(8);
cells.setCellValue(list.get(i)).getColor());
单元格=行。创建单元格(9);
cells.setCellValue(list.get(i)).getSize());
单元格=行。创建单元格(10);
cells.setCellValue(list.get(i)).getTexture());
单元格=行。创建单元(11);
cells.setCellValue(list.get(i)).getPurchasedNumber());
单元格=行。创建单元(12);
cells.setCellValue(list.get(i)).getPurchaseprice());
单元格=行。创建单元(13);
cells.setCellValue(list.get(i)).getPurchasePriceSun());
单元格=行。创建单元(14);
cells.setCellValue(list.get(i)).getOutlibraryNumber());
}
尝试{
输出流oStream=response。获取输出流();
WB。写(oStream);
牡蛎。flush();
} catch(找不到文件异常E1){
//TODO自动生成的捕捉块
E1。printstacktrace();
} catch (IOException e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
}以上就是爪哇实现数据库中查询出的数据转存成超过表的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。