• 下载图片,文档,excel导入导出


    Q1:下载图片,文档

    --1:Fileio.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <p>
            <a href="Download?filename=images/猴哥.jpg">下载猴哥0</a><br /> <a
                href="Download?filename=images/pic(10).jpg">下载图片1</a><br /> <a
                href="Download?filename=images/pic(11).jpg">下载图片2</a><br /> <a
                href="Download?filename=images/pic(12).jpg">下载图片3</a>
        </p>
        <p>
            <a href="Download?filename=LICENSE.txt">下载文本</a>
        </p>
    </body>
    </html>

    -2:servlet(Download)

    package com.action;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @WebServlet("/Download")
    public class Download extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public Download() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              String filename = request.getParameter("filename");
                request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                
                
                //获得要下载的文件路径
                String path=getServletContext().getRealPath(filename);
                System.out.println(path);
                //获得文件名
                //H:workspace.metadata.pluginsorg.eclipse.wst.server.core	mp0wtpwebappsAjaxResultimages12.jpg
                String name=path.substring(path.lastIndexOf("\")+1);
                //转码
                name=URLEncoder.encode(name,"utf-8"); 
                
                //修改http头部,设置输出为附件
                response.setHeader("Content-Disposition", "attachment;filename="+name);
                
                //输入流,获得文件的字节流 
                InputStream is=new FileInputStream(path);
                byte[] bytes=new byte[is.available()];
                is.read(bytes);
                
                //将字节流写入response中
                response.getOutputStream().write(bytes);
                is.close();
                response.flushBuffer();
                response.getOutputStream().flush();
        }
    
    }

    --点击下载时

    提示:本文的最后会有java编译器图片附上

    Q2:Excel导出的第一种方式,也是比较简单的一种方式

     1.html用上面的就好,只是加了一点代码

    <P>
    
            <a href="DownloadXLS">导出xls</a>
        </P>

    2:servlet(DownloadXLS)--此方法用于不连接数据库操作

    package com.action;
    
    import java.io.IOException;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @WebServlet("/DownloadXLS")
    public class DownloadXLS extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public DownloadXLS() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String filename = request.getParameter("filename");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            // 写入bom头
            byte[] uft8bom={(byte)0xef,(byte)0xbb,(byte)0xbf};
        
            String name=URLEncoder.encode("月度收入报表.csv","utf-8"); 
            
            //修改http头部,设置输出为附件
            response.setHeader("Content-Disposition", "attachment;filename="+name);
            
            String result="日期,收入
    ";
            
            for (int i = 1; i <=10; i++) {
                result+="2018-06-"+i+","+(i*10)+"万
    ";
            }
            result=new String(result.getBytes(),"utf-8");
            //将字节流写入response中
            response.getOutputStream().write(uft8bom);  //写入头部解决乱码问题
            response.getOutputStream().write(result.getBytes("utf-8"));
            response.flushBuffer();
            response.getOutputStream().flush();
        }
    
    }

    3:servlet(DownloadXLS)--此方法用于连接数据库操作

    package com.action;
    
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.bos.Menuboimpl;
    import com.vos.Menu;
    
    
    
    @WebServlet("/DownloadXLS")
    public class DownloadXLS extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public DownloadXLS() {
            super();
        }
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             String filename = request.getParameter("filename");
                request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                response.setContentType("application/vnd.ms-excel");//此处我是用了火狐浏览器,这句话非常重要,下面会有介绍
                // 写入bom头
                byte[] uft8bom={(byte)0xef,(byte)0xbb,(byte)0xbf};
            
                String name=URLEncoder.encode("月度收入报表.csv","utf-8"); 
                
                //修改http头部,设置输出为附件
                response.setHeader("Content-Disposition", "attachment;filename="+name);
                
                String result="编号,类型,名称,价格,状态,折扣,日期
    ";
                Menuboimpl mi=new Menuboimpl();
                int mmtid=Integer.parseInt(request.getParameter("mmtid"));
                System.out.println(mmtid);
                //int mmtid=1;
                List<Menu> list=null;
                if(mmtid==0) {
                    list=mi.getMenuAllListAll();
                }else {
                     list=mi.getMenuAllList(mmtid);
                }
                for(Menu item:list) {
                     result+=item.getMid()+","+item.getMmtid()+","+item.getMname()+","+item.getMprice()+","+
                item.getStatus()+","+item.getMdiscount()+","+item.getMdate()+"
    ";
                }
                result=new String(result.getBytes("utf-8"),"utf-8");
                //将字节流写入response中
                response.getOutputStream().write(uft8bom);  //写入头部解决乱码问题
                response.getOutputStream().write(result.getBytes("utf-8"));
                response.flushBuffer();
                response.getOutputStream().flush();
               
        }
    
    }

    获取数据的来源大家应该都会了

    上面的那句话不同浏览器可能会有不同

    按照内容类型排列的 Mime 类型列表

    类型/子类型扩展名
    application/envoy evy
    application/fractals fif
    application/futuresplash spl
    application/hta hta
    application/internet-property-stream acx
    application/mac-binhex40 hqx
    application/msword doc
    application/msword dot
    application/octet-stream *
    application/octet-stream bin
    application/octet-stream class
    application/octet-stream dms
    application/octet-stream exe
    application/octet-stream lha
    application/octet-stream lzh
    application/oda oda
    application/olescript axs
    application/pdf pdf
    application/pics-rules prf
    application/pkcs10 p10
    application/pkix-crl crl
    application/postscript ai
    application/postscript eps
    application/postscript ps
    application/rtf rtf
    application/set-payment-initiation setpay
    application/set-registration-initiation setreg
    application/vnd.ms-excel xla
    application/vnd.ms-excel xlc
    application/vnd.ms-excel xlm
    application/vnd.ms-excel xls
    application/vnd.ms-excel xlt
    application/vnd.ms-excel xlw
    application/vnd.ms-outlook msg
    application/vnd.ms-pkicertstore sst
    application/vnd.ms-pkiseccat cat
    application/vnd.ms-pkistl stl
    application/vnd.ms-powerpoint pot
    application/vnd.ms-powerpoint pps
    application/vnd.ms-powerpoint ppt
    application/vnd.ms-project mpp
    application/vnd.ms-works wcm
    application/vnd.ms-works wdb
    application/vnd.ms-works wks
    application/vnd.ms-works wps
    application/winhlp hlp
    application/x-bcpio bcpio
    application/x-cdf cdf
    application/x-compress z
    application/x-compressed tgz
    application/x-cpio cpio
    application/x-csh csh
    application/x-director dcr
    application/x-director dir
    application/x-director dxr
    application/x-dvi dvi
    application/x-gtar gtar
    application/x-gzip gz
    application/x-hdf hdf
    application/x-internet-signup ins
    application/x-internet-signup isp
    application/x-iphone iii
    application/x-javascript js
    application/x-latex latex
    application/x-msaccess mdb
    application/x-mscardfile crd
    application/x-msclip clp
    application/x-msdownload dll
    application/x-msmediaview m13
    application/x-msmediaview m14
    application/x-msmediaview mvb
    application/x-msmetafile wmf
    application/x-msmoney mny
    application/x-mspublisher pub
    application/x-msschedule scd
    application/x-msterminal trm
    application/x-mswrite wri
    application/x-netcdf cdf
    application/x-netcdf nc
    application/x-perfmon pma
    application/x-perfmon pmc
    application/x-perfmon pml
    application/x-perfmon pmr
    application/x-perfmon pmw
    application/x-pkcs12 p12
    application/x-pkcs12 pfx
    application/x-pkcs7-certificates p7b
    application/x-pkcs7-certificates spc
    application/x-pkcs7-certreqresp p7r
    application/x-pkcs7-mime p7c
    application/x-pkcs7-mime p7m
    application/x-pkcs7-signature p7s
    application/x-sh sh
    application/x-shar shar
    application/x-shockwave-flash swf
    application/x-stuffit sit
    application/x-sv4cpio sv4cpio
    application/x-sv4crc sv4crc
    application/x-tar tar
    application/x-tcl tcl
    application/x-tex tex
    application/x-texinfo texi
    application/x-texinfo texinfo
    application/x-troff roff
    application/x-troff t
    application/x-troff tr
    application/x-troff-man man
    application/x-troff-me me
    application/x-troff-ms ms
    application/x-ustar ustar
    application/x-wais-source src
    application/x-x509-ca-cert cer
    application/x-x509-ca-cert crt
    application/x-x509-ca-cert der
    application/ynd.ms-pkipko pko
    application/zip zip
    audio/basic au
    audio/basic snd
    audio/mid mid
    audio/mid rmi
    audio/mpeg mp3
    audio/x-aiff aif
    audio/x-aiff aifc
    audio/x-aiff aiff
    audio/x-mpegurl m3u
    audio/x-pn-realaudio ra
    audio/x-pn-realaudio ram
    audio/x-wav wav
    image/bmp bmp
    image/cis-cod cod
    image/gif gif
    image/ief ief
    image/jpeg jpe
    image/jpeg jpeg
    image/jpeg jpg
    image/pipeg jfif
    image/svg+xml svg
    image/tiff tif
    image/tiff tiff
    image/x-cmu-raster ras
    image/x-cmx cmx
    image/x-icon ico
    image/x-portable-anymap pnm
    image/x-portable-bitmap pbm
    image/x-portable-graymap pgm
    image/x-portable-pixmap ppm
    image/x-rgb rgb
    image/x-xbitmap xbm
    image/x-xpixmap xpm
    image/x-xwindowdump xwd
    message/rfc822 mht
    message/rfc822 mhtml
    message/rfc822 nws
    text/css css
    text/h323 323
    text/html htm
    text/html html
    text/html stm
    text/iuls uls
    text/plain bas
    text/plain c
    text/plain h
    text/plain txt
    text/richtext rtx
    text/scriptlet sct
    text/tab-separated-values tsv
    text/webviewhtml htt
    text/x-component htc
    text/x-setext etx
    text/x-vcard vcf
    video/mpeg mp2
    video/mpeg mpa
    video/mpeg mpe
    video/mpeg mpeg
    video/mpeg mpg
    video/mpeg mpv2
    video/quicktime mov
    video/quicktime qt
    video/x-la-asf lsf
    video/x-la-asf lsx
    video/x-ms-asf asf
    video/x-ms-asf asr
    video/x-ms-asf asx
    video/x-msvideo avi
    video/x-sgi-movie movie
    x-world/x-vrml flr
    x-world/x-vrml vrml
    x-world/x-vrml wrl
    x-world/x-vrml wrz
    x-world/x-vrml xaf
    x-world/x-vrml

     Q3:Excel导出的第二种方式

    此方法需要导入几个架包,需要的联系我,我把压缩包发给你

    具体是哪一个我也不太清楚,所以我就全部导入了

    --第一个类(Util),这个类用余测试数据,没有数据库连接

    package ExcelUtil;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.junit.Test;
    
    public class Util {
    
        public static void main(String[] args) throws Exception {
            //writIntoExcel();
            testReadExcel();
            
        }
        public static void writIntoExcel(){
            
             /**
             * 注意这只是07版本以前的做法对应的excel文件的后缀名为.xls
             * 07版本和07版本以后的做法excel文件的后缀名为.xlsx
             */
            //创建新工作簿
            HSSFWorkbook workbook = new HSSFWorkbook();
            //新建工作表
            HSSFSheet sheet = workbook.createSheet("hello");
            //创建行,行号作为参数传递给createRow()方法,第一行从0开始计算
            HSSFRow row = sheet.createRow(0);
            //创建单元格,row已经确定了行号,列号作为参数传递给createCell(),第一列从0开始计算
            HSSFCell cell = row.createCell(2);
            //设置单元格的值,即C1的值(第一行,第三列)
            cell.setCellValue("hello china");
            //输出到磁盘中
            FileOutputStream fos;
            try {
                fos = new FileOutputStream(new File("D:11.xls"));
                workbook.write(fos);
                workbook.close();
                fos.close();
                System.out.println("写入成功!");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
        @Test
        public static void testReadExcel() throws Exception
        {
            //创建输入流
            FileInputStream fis = new FileInputStream(new File("D:11.xls"));
            //通过构造函数传参
            HSSFWorkbook workbook = new HSSFWorkbook(fis);
            //获取工作表
            HSSFSheet sheet = workbook.getSheetAt(0);
            //获取行,行号作为参数传递给getRow方法,第一行从0开始计算
            HSSFRow row = sheet.getRow(0);
            //获取单元格,row已经确定了行号,列号作为参数传递给getCell,第一列从0开始计算
            HSSFCell cell = row.getCell(2);
            //设置单元格的值,即C1的值(第一行,第三列)
            String cellValue = cell.getStringCellValue();
            System.out.println("第一行第三列的值是"+cellValue);
            workbook.close();
            fis.close();
        }
    }

    --第二个类(ExcelControl),这个类可以连接数据库

    package ExcelUtil;
    import java.io.FileOutputStream;
    import java.util.List;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.HorizontalAlignment;
    
    import dao.UinfoDao;
    import vo.uinfo;
    
    public class ExcelControl {
         /** 
         * @功能:手工构建一个简单格式的Excel 
         */   
        /*private static List<uinfo> getMember() throws Exception  
        {  
            List list = new ArrayList();  
            SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");  
      
            //javabean 实体类
            uinfo user1 = new uinfo(1,"1998-05-13","男","广东韶关");  
            uinfo user2 = new uinfo(2,"1999-10-13","女","广东珠海");  
            uinfo user3 = new uinfo(3,"2000-07-13","男","广东广州");  
            list.add(user1);  
            list.add(user2);  
            list.add(user3);  
      
            return list;  
        } */ 
        private static UinfoDao uinfodao=new UinfoDao();
        public static List<uinfo> getMember(){
            List<uinfo>list=uinfodao.getAllUinfo();
            return list;
        }
        
        public static void main(String[] args) throws Exception  
        {  
            // 第一步,创建一个webbook,对应一个Excel文件  
            HSSFWorkbook wb = new HSSFWorkbook();  
             // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet sheet = wb.createSheet("信息表一");  
            // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short   
            HSSFRow row = sheet.createRow((int) 0);  
            // 第四步,创建单元格,并设置值表头 设置表头居中  
            HSSFCellStyle style = wb.createCellStyle();  
            style.setAlignment(HorizontalAlignment.CENTER);// 创建一个居中格式  
            HSSFCell cell = row.createCell((short) 0);  
            cell.setCellValue("编号");  
            cell.setCellStyle(style);  
            cell = row.createCell((short) 1);  
            cell.setCellValue("出生日期");  
            cell.setCellStyle(style);  
            cell = row.createCell((short) 2);  
            cell.setCellValue("性别");  
            cell.setCellStyle(style);  
            cell = row.createCell((short) 3);  
            cell.setCellValue("籍贯");
            cell.setCellStyle(style);  
      
            // 第五步,写入实体数据 实际应用中这些数据从数据库得到, 
            List list = ExcelControl.getMember();  
      
            for (int i = 0; i < list.size(); i++)  
            {  
                row = sheet.createRow((int) i + 1);  
                uinfo info = (uinfo) list.get(i);  
                // 第四步,创建单元格,并设置值  
                row.createCell((short) 0).setCellValue((double) info.getUid());  
                row.createCell((short) 1).setCellValue(info.getUsex());  
                row.createCell((short) 2).setCellValue((String)info.getUbirthday());  
                row.createCell((short) 3).setCellValue(info.getUaddress()); 
                //cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(info.getUaddress()));  
            }  
            // 第六步,将文件存到指定位置  
            try  
            {  
                FileOutputStream fout = new FileOutputStream("C:\Users\one\Desktop\Members.xls");  
                wb.write(fout);  
                fout.close();  
                System.out.println("写入成功!");
            }  
            catch (Exception e)  
            {  
                e.printStackTrace();  
            }  
        }  
    }

    --上面从数据库读取文件就需要各位自己弄了,大家把代码好好看看就明白了

    zywds
  • 相关阅读:
    SQL 优化(来源平时总结及网络分享)
    mysql大事务可能导致哪些问题?
    Cannot find module './assets/css/xxx.scss' or its corresponding type declarations
    烽火2280服务器告警配置
    LSI RAID卡开机出现The following VDs are missing: 000
    LSI RAID卡开机出现 Invalid SAS topology detected.
    问题记录:自研2280服务器登录时不采用https登录提升无效的用户名或密码
    内存ECC介绍及设置
    超微主板出现system tem温度告警
    Selenium Grid自动化分布式执行
  • 原文地址:https://www.cnblogs.com/zywds/p/9362310.html
Copyright © 2020-2023  润新知