下载图片,文档,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\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\AjaxResult\images\12.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="日期,收入\r\n";
        
        for (int i = 1; i <=10; i++) {
            result+="2018-06-"+i+","+(i*10)+"万\r\n";
        }
        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="编号,类型,名称,价格,状态,折扣,日期\r\n";
            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()+"\r\n";
            }
            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/envoyevy
application/fractalsfif
application/futuresplashspl
application/htahta
application/internet-property-streamacx
application/mac-binhex40hqx
application/msworddoc
application/msworddot
application/octet-stream*
application/octet-streambin
application/octet-streamclass
application/octet-streamdms
application/octet-streamexe
application/octet-streamlha
application/octet-streamlzh
application/odaoda
application/olescriptaxs
application/pdfpdf
application/pics-rulesprf
application/pkcs10p10
application/pkix-crlcrl
application/postscriptai
application/postscripteps
application/postscriptps
application/rtfrtf
application/set-payment-initiationsetpay
application/set-registration-initiationsetreg
application/vnd.ms-excelxla
application/vnd.ms-excelxlc
application/vnd.ms-excelxlm
application/vnd.ms-excelxls
application/vnd.ms-excelxlt
application/vnd.ms-excelxlw
application/vnd.ms-outlookmsg
application/vnd.ms-pkicertstoresst
application/vnd.ms-pkiseccatcat
application/vnd.ms-pkistlstl
application/vnd.ms-powerpointpot
application/vnd.ms-powerpointpps
application/vnd.ms-powerpointppt
application/vnd.ms-projectmpp
application/vnd.ms-workswcm
application/vnd.ms-workswdb
application/vnd.ms-workswks
application/vnd.ms-workswps
application/winhlphlp
application/x-bcpiobcpio
application/x-cdfcdf
application/x-compressz
application/x-compressedtgz
application/x-cpiocpio
application/x-cshcsh
application/x-directordcr
application/x-directordir
application/x-directordxr
application/x-dvidvi
application/x-gtargtar
application/x-gzipgz
application/x-hdfhdf
application/x-internet-signupins
application/x-internet-signupisp
application/x-iphoneiii
application/x-javascriptjs
application/x-latexlatex
application/x-msaccessmdb
application/x-mscardfilecrd
application/x-msclipclp
application/x-msdownloaddll
application/x-msmediaviewm13
application/x-msmediaviewm14
application/x-msmediaviewmvb
application/x-msmetafilewmf
application/x-msmoneymny
application/x-mspublisherpub
application/x-msschedulescd
application/x-msterminaltrm
application/x-mswritewri
application/x-netcdfcdf
application/x-netcdfnc
application/x-perfmonpma
application/x-perfmonpmc
application/x-perfmonpml
application/x-perfmonpmr
application/x-perfmonpmw
application/x-pkcs12p12
application/x-pkcs12pfx
application/x-pkcs7-certificatesp7b
application/x-pkcs7-certificatesspc
application/x-pkcs7-certreqrespp7r
application/x-pkcs7-mimep7c
application/x-pkcs7-mimep7m
application/x-pkcs7-signaturep7s
application/x-shsh
application/x-sharshar
application/x-shockwave-flashswf
application/x-stuffitsit
application/x-sv4cpiosv4cpio
application/x-sv4crcsv4crc
application/x-tartar
application/x-tcltcl
application/x-textex
application/x-texinfotexi
application/x-texinfotexinfo
application/x-troffroff
application/x-trofft
application/x-trofftr
application/x-troff-manman
application/x-troff-meme
application/x-troff-msms
application/x-ustarustar
application/x-wais-sourcesrc
application/x-x509-ca-certcer
application/x-x509-ca-certcrt
application/x-x509-ca-certder
application/ynd.ms-pkipkopko
application/zipzip
audio/basicau
audio/basicsnd
audio/midmid
audio/midrmi
audio/mpegmp3
audio/x-aiffaif
audio/x-aiffaifc
audio/x-aiffaiff
audio/x-mpegurlm3u
audio/x-pn-realaudiora
audio/x-pn-realaudioram
audio/x-wavwav
image/bmpbmp
image/cis-codcod
image/gifgif
image/iefief
image/jpegjpe
image/jpegjpeg
image/jpegjpg
image/pipegjfif
image/svg+xmlsvg
image/tifftif
image/tifftiff
image/x-cmu-rasterras
image/x-cmxcmx
image/x-iconico
image/x-portable-anymappnm
image/x-portable-bitmappbm
image/x-portable-graymappgm
image/x-portable-pixmapppm
image/x-rgbrgb
image/x-xbitmapxbm
image/x-xpixmapxpm
image/x-xwindowdumpxwd
message/rfc822mht
message/rfc822mhtml
message/rfc822nws
text/csscss
text/h323323
text/htmlhtm
text/htmlhtml
text/htmlstm
text/iulsuls
text/plainbas
text/plainc
text/plainh
text/plaintxt
text/richtextrtx
text/scriptletsct
text/tab-separated-valuestsv
text/webviewhtmlhtt
text/x-componenthtc
text/x-setextetx
text/x-vcardvcf
video/mpegmp2
video/mpegmpa
video/mpegmpe
video/mpegmpeg
video/mpegmpg
video/mpegmpv2
video/quicktimemov
video/quicktimeqt
video/x-la-asflsf
video/x-la-asflsx
video/x-ms-asfasf
video/x-ms-asfasr
video/x-ms-asfasx
video/x-msvideoavi
video/x-sgi-moviemovie
x-world/x-vrmlflr
x-world/x-vrmlvrml
x-world/x-vrmlwrl
x-world/x-vrmlwrz
x-world/x-vrmlxaf
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();  
        }  
    }  
}

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

 

转载于:https://www.cnblogs.com/zywds/p/9362310.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值