java中怎么把报表导出到excel
发布网友
发布时间:2022-04-19 10:50
我来回答
共5个回答
热心网友
时间:2023-07-27 01:57
导入数据库
@RequestMapping("/uploadOrderFile")
@ResponseBody
public Object uploadOrderFile(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "file") MultipartFile[] files) throws ServletException, IOException, ParseException{
Workbook rwb=null;
if(files!=null && files.length>0){
try {
// String filePath = request.getSession().getServletContext().getRealPath("/") + "\\uploadOrderFile\\" + files.getOriginalFilename();
// System.out.println("----------"+filePath);
rwb = Workbook.getWorkbook(files[0].getInputStream());
Sheet rs=rwb.getSheet(0);//默认0是第一张表,或者rwb.getSheet(Sheet1)Excel要导入的表名
int clos=rs.getColumns();//得到所有的列
int rows=rs.getRows();//得到所有的行
//存放Excel表抬头名称以及对应的列
Map<Integer,Object> map=new HashMap<Integer, Object>();
//实体类集合存放每次循环获得的值
List<Medicine> medicineList=new ArrayList<Medicine>();
for (int i = 0; i < rows; i++) {
//创建实体类
Medicine medicine=new Medicine();
if(i==0){//遍历第一行获取抬头跟对应的列
for (int j = 0; j <clos; j++) {//取得每个抬头名称对应的列
if(rs.getCell(j, i).getContents().equals("品名")){
map.put(j,"品名");
}else if(rs.getCell(j, i).getContents().equals("商品编号")){
map.put(j,"商品编号");
}else if(rs.getCell(j, i).getContents().equals("生产日期")){
map.put(j,"生产日期");
}else if(rs.getCell(j, i).getContents().equals("产地")){
map.put(j,"产地");
}else if(rs.getCell(j, i).getContents().equals("生产厂家")){
map.put(j,"生产厂家");
}else if(rs.getCell(j, i).getContents().equals("批号")){
map.put(j,"批号");
}
}
}else{
//循环遍历map 》》》存的Excel表的抬头名称以及对应的列
for (int j = 0; j < clos; j++) {
if(map.get(j)==null){//如果=null 进入下一个循环
continue;
}
if(map.get(j).equals("品名")){
//如果为空结束当前循环,进入下一个循环
if(rs.getCell(j, i).getContents()==null||rs.getCell(j, i).getContents().equals("")){
continue;
}
medicine.setMedicineName(rs.getCell(j, i).getContents());
}else if(map.get(j).equals("商品编号")&&map.get(j)!=null){
//如果为空结束当前循环,进入下一个循环
if(rs.getCell(j, i).getContents()==null||rs.getCell(j, i).getContents().equals("")){
continue;
}
medicine.setMedicineCode(rs.getCell(j, i).getContents());
}else if(map.get(j).equals("生产日期")&&map.get(j)!=null){
medicine.setCreateTime(rs.getCell(j, i).getContents());
if(rs.getCell(j, i).getContents()!=null && !rs.getCell(j, i).getContents().equals("")){
//如果生产日期存在 则+三年给到期日期赋值
//CommonUtil.getMedicineEffectiveTime为封装好的类
medicine.setEffectTime(CommonUtil.getMedicineEffectiveTime(rs.getCell(j, i).getContents(),3));
}
}else if(map.get(j).equals("产地")&&map.get(j)!=null){
medicine.setAddress(rs.getCell(j, i).getContents());
}else if(map.get(j).equals("生产厂家")&&map.get(j)!=null){
medicine.setProcingArea(rs.getCell(j, i).getContents());
}else if(map.get(j).equals("批号")&&map.get(j)!=null){
medicine.setBatchNumber(rs.getCell(j, i).getContents());
}
}
medicineList.add(medicine);//获得的值放入集合中
}
}
//新增用到的list
List<Medicine> addList=new ArrayList<Medicine>();
//修改用到的list
List<Medicine> updateList=new ArrayList<Medicine>();
//导入数据
for(int i=0;i<medicineList.size();i++){
//判断商品编号是否存在
if(medicineService.selectMedicineCode(medicineList.get(i).getMedicineCode()).size()>0){
//如果存在则修改
updateList.add(medicineList.get(i));
}else{
addList.add(medicineList.get(i));
}
}
int update=0;
int add=0;
if(updateList!=null&&updateList.size()>0){
update=medicineService.updateMedicine(updateList);
}
if(addList!=null&&addList.size()>0){
add= medicineService.addMedicine(addList);
}
if(update>0||add>0){
return new ResponseModel().attr(ResponseModel.KEY_DATA,"数据导入成功!");
}else{
return new ResponseModel().attr(ResponseModel.KEY_ERROR,"数据导入失败!");
}
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
return new ResponseModel().attr(ResponseModel.KEY_ERROR,"没有需要导入的数据!");
}
return null;
}
导出
package beans.excel;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Calendar;
import java.util.Date;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Boolean;
import jxl.write.DateFormats;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
public class MutiStyleExcelWrite {
public void createExcel(OutputStream os) throws WriteException,IOException {
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
//构造表头
sheet.mergeCells(0, 0, 4, 0);//添加合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行
WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一个单元格样式控制对象
titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中
titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
Label title = new Label(0,0,"JExcelApi支持数据类型详细说明",titleFormate);
sheet.setRowView(0, 600, false);//设置第一行的高度
sheet.addCell(title);
//创建要显示的具体内容
WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体
color.setColour(Colour.GOLD);//设置字体颜色为金*
WritableCellFormat colorFormat = new WritableCellFormat(color);
Label formate = new Label(0,1,"数据格式",colorFormat);
sheet.addCell(formate);
Label floats = new Label(1,1,"浮点型");
sheet.addCell(floats);
Label integers = new Label(2,1,"整型");
sheet.addCell(integers);
Label booleans = new Label(3,1,"布尔型");
sheet.addCell(booleans);
Label dates = new Label(4,1,"日期格式");
sheet.addCell(dates);
Label example = new Label(0,2,"数据示例",colorFormat);
sheet.addCell(example);
//浮点数据
//设置下划线
WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);
WritableCellFormat greyBackground = new WritableCellFormat(underline);
greyBackground.setBackground(Colour.GRAY_25);//设置背景颜色为灰色
Number number = new Number(1,2,3.1415926535,greyBackground);
sheet.addCell(number);
//整形数据
WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体
WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);
Number ints = new Number(2,2,15042699,boldNumberFormate);
sheet.addCell(ints);
//布尔型数据
Boolean bools = new Boolean(3,2,true);
sheet.addCell(bools);
//日期型数据
//设置黑体和下划线
WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);
WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);
Calendar c = Calendar.getInstance();
Date date = c.getTime();
DateTime dt = new DateTime(4,2,date,boldDateFormate);
sheet.addCell(dt);
//把创建的内容写入到输出流中,并关闭输出流
workbook.write();
workbook.close();
os.close();
}
}
热心网友
时间:2023-07-27 01:57
是不是在JSP页面导出,如果实在JSP页面导出的话要setContenttype如果不是,可能就要用到相关的报表工具了
热心网友
时间:2023-07-27 01:58
使用jxl工具,我之前分享给公共方法,今天头条 搜索 黑客师 里面有分享,
热心网友
时间:2023-07-27 01:58
itext
或
POI
~
~
~
~
~
热心网友
时间:2023-07-27 01:59
我想弱弱的问你 下excel也是数据库啊
Java 实现数据库数据导出为 Excel 文件
1. 数据库表设计创建"data_export"表,用于记录导出数据的记录信息。同时,创建"data_export_excel"表,用于存储导出的Excel文件信息。2. 项目依赖引入poi-ooxml库是生成Excel文件的核心,需在项目中添加此依赖。由于SpringBoot starter模块包含了Scheduled功能,无需额外引入。3. Excel生成工具类定义Excel表...
Java导入、导出excel保姆级教程(附封装好的工具类)
要实现这个功能,首先需要在项目中引入Apache POI库。在pom.xml中添加相关依赖后,我们开始一步步操作:创建Excel的基本元素,包括WorkBook,然后添加Sheet并设置名称。 接着创建Row和Cell,可以指定单元格的类型,如文本、数字等。 美化导出的Excel,通过创建样式和字体,如设置字体样式、颜色和大小,调整...
如何用Java导出数据存到excel里面
import java.io.*;import java.io.File.*;import java.util.*;public class excel { public static void main(String[] args){ String targetfile = "c:/out.xls";//输出的excel文件名 String worksheet = "List";//输出的excel文件工作表名 String[] title = {"ID","NAME","DESCRIB"};...
Java实现Excel导入和导出,看这一篇就够了(珍藏版)(一)
灵活设置表中数据,通过Controller代码实现动态导出。1.11 动态导出(导出图片)将图片链接转换为java.net.URL类型,实现图片在导出文件中的直接显示。1.12 动态导出(实现下拉列表)设置性别、城市等列的下拉选择,用于数据导出时的约束限制。1.13 动态导出(横向合并)将单元格横向合并,通过ExcelUtils.CO...
用java将数据导出到wps表格中,怎么实现
2)点击导出按钮后预览: 3)最终生成的excel表格图片预览: 二:代码演示: 说明:执行操作时,请先引进导出excel表格的jar文件包。 找到导出按钮所执行的js方法,在java后天查看该方法的实现即可。 1)jsp代码: [html] view plaincopyprint? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%...
Java开发中如何用POI优雅的导出Excel文件
实现步骤包括:1)定义注解,标注需要导出的字段及字段名称,以便生成表头。2)实体类设计,根据注解确定哪些字段需要导出到Excel。3)使用POI库操作Excel文件,通过HttpServletResponse或文件存储进行输出。具体实现中,将数据从集合中读取,根据注解生成表头,并填充到Excel的相应列中。最后,将Excel文件输出到...
如何导出生成excel文件 java
在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主。下面给出用java写入数据到excel表格方法:1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。下载地址:http://www.andykhan.com...
怎样实现把java显示的结果在EXCEL中输出
1./ 出险信息导出到excel(fc)param mapping param form param request param response throws IOException / public void exportActoExcel(ActionMapping mapping, ActionForm form ,HttpServletRequest request,HttpServletResponse response) throws IOException { ActionErrors errors = new ActionErrors();Ac...
报表如何批量导出成 excel 文件
)}{报表2(参数1=value1;参数2=value2;…)}。这种方式在高版本的Tomcat中,会有一些特殊符号的限定,使用时可以将{}转换成对应的urlencode方式,{为%7B,}为%7D,如果有其他值的话,做对应转换即可。多表多Excel:这种方式和示例二类似,在实际使用中导出Excel时要求每个报表导出为不同的Excel文件。
急啊!java中怎么把10万条数据导入Excel,
public class ExcelWrit { public static void main(String[] args) throws IOException, RowsExceededException, WriteException { String path="D:\\123.xlsx";//找到Excel表格 File file=new File(path);//为excel表格开辟内存 WritableWorkbook workbook=Workbook.createWorkbook(file);WritableSheet ...