excel电脑怎么下载(超详细的java生成excel文件并下载)

各位老铁们好,相信很多人对excel电脑怎么下载都不是特别的了解,因此呢,今天就来为大家分享下关于excel电脑怎么下载以及超详细的java生成excel文件并下载的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我觉得有必要写这个博客的原因

1、导入所需要的jar包

<!–excel引用包–>\n<dependency>\n<groupId>net.sourceforge.jexcelapi</groupId>\n<artifactId>jxl</artifactId>\n<version>2.6.12</version>\n</dependency>

2、编写所需要的类

packagecom.test.demo.controllers;\n\nimportcom.test.demo.domain.entities.Address;\nimportcom.test.demo.services.ExcelService;\nimportjxl.Workbook;\nimportjxl.format.Alignment;\nimportjxl.format.Border;\nimportjxl.format.BorderLineStyle;\nimportjxl.format.Colour;\nimportjxl.format.*;\nimportjxl.format.VerticalAlignment;\nimportjxl.write.*;\nimportorg.springframework.beans.factory.annotation.Autowired;\nimportorg.springframework.web.bind.annotation.RequestMapping;\nimportorg.springframework.web.bind.annotation.RestController;\nimportorg.springframework.web.context.request.RequestContextHolder;\nimportorg.springframework.web.context.request.ServletRequestAttributes;\n\nimportjavax.servlet.http.HttpServletRequest;\nimportjavax.servlet.http.HttpServletResponse;\nimportjava.io.File;\nimportjava.io.FileInputStream;\nimportjava.io.InputStream;\nimportjava.io.OutputStream;\nimportjava.text.SimpleDateFormat;\nimportjava.util.List;\n\n/**\n*@authordyh\n*@create2018-07-14下午8:20\n*@descexcle表格功能编写\n**/\n@RestController\n@RequestMapping(&34;)\npublicclassExcelController{\n\n@Autowired\nprivateExcelServiceexcelService;\n\n/**\n*下载文件\n*\n*@return\n*/\n@RequestMapping({&34;})\npublicvoiddownload(){\nServletRequestAttributesrequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();\nHttpServletResponseresponse=requestAttributes.getResponse();\nHttpServletRequestrequest=requestAttributes.getRequest();\n\n//文件名\nStringfilename=&34;;\n\ntry{\n\n//写到服务器上\nStringpath=request.getSession().getServletContext().getRealPath(&34;)+&34;+filename;\n\n//写到服务器上(这种测试过,在本地可以,放到linux服务器就不行)\n//Stringpath=this.getClass().getClassLoader().getResource(&34;).getPath()+&34;+filename;\n\nFilename=newFile(path);\n//创建写工作簿对象\nWritableWorkbookworkbook=Workbook.createWorkbook(name);\n//工作表\nWritableSheetsheet=workbook.createSheet(&34;,0);\n//设置字体;\nWritableFontfont=newWritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);\n\nWritableCellFormatcellFormat=newWritableCellFormat(font);\n//设置背景颜色;\ncellFormat.setBackground(Colour.WHITE);\n//设置边框;\ncellFormat.setBorder(Border.ALL,BorderLineStyle.DASH_DOT);\n//设置文字居中对齐方式;\ncellFormat.setAlignment(Alignment.CENTRE);\n//设置垂直居中;\ncellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);\n//分别给1,5,6列设置不同的宽度;\nsheet.setColumnView(0,15);\nsheet.setColumnView(4,60);\nsheet.setColumnView(5,35);\n//给sheet电子版中所有的列设置默认的列的宽度;\nsheet.getSettings().setDefaultColumnWidth(20);\n//给sheet电子版中所有的行设置默认的高度,高度的单位是1/20个像素点,但设置这个貌似就不能自动换行了\n//sheet.getSettings().setDefaultRowHeight(30*20);\n//设置自动换行;\ncellFormat.setWrap(true);\n\n//单元格\nLabellabel0=newLabel(0,0,&34;,cellFormat);\nLabellabel1=newLabel(1,0,&34;,cellFormat);\nLabellabel2=newLabel(2,0,&34;,cellFormat);\nLabellabel3=newLabel(3,0,&34;,cellFormat);\nLabellabel4=newLabel(4,0,&34;,cellFormat);\nLabellabel5=newLabel(5,0,&34;,cellFormat);\n\nsheet.addCell(label0);\nsheet.addCell(label1);\nsheet.addCell(label2);\nsheet.addCell(label3);\nsheet.addCell(label4);\nsheet.addCell(label5);\n\n//给第二行设置背景、字体颜色、对齐方式等等;\nWritableFontfont2=newWritableFont(WritableFont.ARIAL,14,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);\nWritableCellFormatcellFormat2=newWritableCellFormat(font2);\n//设置文字居中对齐方式;\ncellFormat2.setAlignment(Alignment.CENTRE);\n//设置垂直居中;\ncellFormat2.setVerticalAlignment(VerticalAlignment.CENTRE);\ncellFormat2.setBackground(Colour.WHITE);\ncellFormat2.setBorder(Border.ALL,BorderLineStyle.THIN);\ncellFormat2.setWrap(true);\n\n//记录行数\nintn=1;\n\n//查找所有地址\nList<Address>addressList=excelService.findAll();\nif(addressList!=null&&addressList.size()>0){\n\n//遍历\nfor(Addressa:addressList){\n\nSimpleDateFormatsdf=newSimpleDateFormat(&34;);\nStringcreateTime=sdf.format(a.getCreateTime());\n\nLabellt0=newLabel(0,n,a.getId()+&34;,cellFormat2);\nLabellt1=newLabel(1,n,a.getProvince(),cellFormat2);\nLabellt2=newLabel(2,n,a.getCity(),cellFormat2);\nLabellt3=newLabel(3,n,a.getArea(),cellFormat2);\nLabellt4=newLabel(4,n,a.getAddress(),cellFormat2);\nLabellt5=newLabel(5,n,createTime,cellFormat2);\n\nsheet.addCell(lt0);\nsheet.addCell(lt1);\nsheet.addCell(lt2);\nsheet.addCell(lt3);\nsheet.addCell(lt4);\nsheet.addCell(lt5);\n\nn++;\n}\n}\n\n//开始执行写入操作\nworkbook.write();\n//关闭流\nworkbook.close();\n\n}catch(Exceptione){\ne.printStackTrace();\n}\n//第六步,下载excel\n\nOutputStreamout=null;\ntry{\n\n//1.弹出下载框,并处理中文\n/**如果是从jsp页面传过来的话,就要进行中文处理,在这里action里面产生的直接可以用\n*Stringfilename=request.getParameter(&34;);\n*/\n/**\nif(request.getMethod().equalsIgnoreCase(&34;)){\nfilename=newString(filename.getBytes(&34;),&34;);\n}\n*/\n\nresponse.addHeader(&34;,&34;\n+java.net.URLEncoder.encode(filename,&34;));\n\n//2.下载\nout=response.getOutputStream();\nStringpath3=request.getSession().getServletContext().getRealPath(&34;)+&34;+filename;\n\n//inputStream:读文件,前提是这个文件必须存在,要不就会报错\nInputStreamis=newFileInputStream(path3);\n\nbyte[]b=newbyte[4096];\nintsize=is.read(b);\nwhile(size>0){\nout.write(b,0,size);\nsize=is.read(b);\n}\nout.close();\nis.close();\n}catch(Exceptione){\ne.printStackTrace();\n}\n}\n}

packagecom.test.demo.services;\n\nimportcom.test.demo.domain.entities.Address;\nimportcom.test.demo.domain.entities.AddressRepository;\nimportorg.springframework.beans.factory.annotation.Autowired;\nimportorg.springframework.stereotype.Service;\n\nimportjava.util.List;\n\n/**\n*@authordyh\n*@create2018-07-14下午9:21\n*@descexcel测试类\n**/\n\n@Service\npublicclassExcelService{\n\n@Autowired\nprivateAddressRepositoryaddressRepository;\n\n/**\n*得到所有地址列表\n*\n*@return\n*/\npublicList<Address>findAll(){\nreturnaddressRepository.findAll();\n}\n}

3、配置文件

server.port=8025\n\nspring.datasource.max-idle=10\nspring.datasource.max-wait=10000\nspring.datasource.min-idle=1\nspring.datasource.initial-size=1\nspring.datasource.validation-query=SELECT1\nspring.datasource.test-on-borrow=false\nspring.datasource.test-while-idle=true\nspring.datasource.time-between-eviction-runs-millis=18800\n\nspring.datasource.url=@db.dyh2020.url@\nspring.datasource.username=@db.dyh2020.username@\nspring.datasource.password=@db.dyh2020.password@\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\n\nspring.jpa.database=MYSQL\n自动检查实体和数据库表是否一致,如果不一致则会进行更新数据库表\nspring.jpa.hibernate.ddl-auto=none

写好代码之后本地运行,在浏览器输入地址:http://localhost:8025/excel/download即可看到下载的文件

github代码地址:https://github.com/DYH2020/springBootDemo

转自:https://www.cnblogs.com/dyh2025/p/9311118.html

好了,关于excel电脑怎么下载和超详细的java生成excel文件并下载的问题到这里结束啦,希望可以解决您的问题哈!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平