• 数据库连接和导出excal


    总结了一下,大家最近出现的问题在这里我给出我遇到类似困难时的解决办法#

    SQL sever的连接

      SQL sever我当时是在数据库课设的时候用过一次。

      我遇到的问题相关解决链接如下:

      链接1

      链接2

    mySQL的连接

    一、下载Mysql连接Jar包

    1:jar可到Mysql官网下载:地址Mysql 连接jar包.
    如图,在下拉列表框中选择Platform Independent

    2:点击DownLoad

    3:在新得页面点击No thanks, just start my download.意思是,不,谢谢,我只想进行下载

    二、集成mysql jar到你得项目中

    1:先新建一个文件夹,用来存放第三方jar,这里就是用来存放mysql得连接jar包

    2:在新弹出得窗口中填写一个文件夹名称,文件夹名可以随便写,只要符合windows文件夹命名就可以,这里我写得是lib(library得简写)

    3:你已经下载好了mysql jar包,如果第一步成功得话.如图
    把下载的jar复制到刚才新建的lib下(Ctrl+c Ctrl+v)

    4:右击lib下得mysql jar包------Build Path------Add to Build Path,如果成功得话,文件夹可能会有一些变化

    三、连接mysql

    1:新建一个MysqlManager 类,如果你不知道怎么建,以及建立在什么地方,我想你可能是缺少一些java以及IED得知识,不如回头学一下再过来.

    public class MysqlManager {
    	private static  Connection mConnect;
    	static {
    		try {
    			System.out.println("init---");
    			Class.forName("com.mysql.cj.jdbc.Driver");
    			mConnect=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "hxl495594..");
    		} catch (ClassNotFoundException | SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	public static Connection getConnection() {
    		return mConnect;
    		
    	}
    	public static void  close() {
    		try {
    			mConnect.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    }
    
    

    2:测试代码Main.java

    
    public class Main {
    	
    	public Main() {
    	
    
    	}
    	public static void main(String[] args) {
    		MysqlManager.getConnection();
    		
    	}
    
    }
    

    3:如果运行以上代码没有报错,说明jar包成功集成了,并且成功连接到mysql.

    但是异常总是伴随着我们,比如:

    1:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    你连接得密码可能有误

    2:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
    没有找到com.mysql.cj.jdbc.Driver类,可能是你第二步没有做对,不妨回头仔细阅读一下

    3:Caused by: java.net.UnknownHostException: localhost
    你得mysql主机连接路径可能存在问题,

    excal 导出

    1.JDBC连接数据库部分在上面已经介绍,简述:创建一个JavaBean类,连接数据库获取该JavaBean对象的集合;

    2.创建通用工具类,用于生成Excel模板:

    
    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;
     
    public class ExcelUtil {
     
    	/*
    	 * 导出Excel
    	 */
    	public static HSSFWorkbook getHSSFWorkbook(String sheetName,
    			String[] title, String[][] values, HSSFWorkbook wb) {
    		// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
    		if (wb == null) {
    			wb = new HSSFWorkbook();
    		}
     
    		// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
    		HSSFSheet sheet = wb.createSheet(sheetName);
     
    		// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel行数列数有限制
    		HSSFRow row = sheet.createRow(0);
     
    		// 第四步,创建单元格,并设置表头 设置表头居中
    		HSSFCellStyle style = wb.createCellStyle();
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
     
    		// 声明列对象
    		HSSFCell cell = null;
     
    		// 创建标题
    		for (int i = 0; i < title.length; i++) {
    			cell = row.createCell(i);
    			cell.setCellValue(title[i]);
    			cell.setCellStyle(style);
    		}
     
    		// 创建内容
    		for (int i = 0; i < values.length; i++) {
    			row = sheet.createRow(i + 1);
    			for (int j = 0; j < values[i].length; j++) {
    				// 将内容按顺序赋给对应的列对象
    				row.createCell(j).setCellValue(values[i][j]);
    			}
    		}
    		return wb;
    	}
    }
    

    3.Action层,调用Dao层方法和Util层方法将数据转成Excel输出:

    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.List;
     
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.struts2.ServletActionContext;
     
    import com.kun.bean.Goods;
    import com.kun.dao.TestQuery;
    import com.kun.util.ExcelUtil;
    import com.opensymphony.xwork2.ActionSupport;
     
    public class Test extends ActionSupport {
    	
    	private static final long serialVersionUID = 2543844745175758118L;
    	
    	private String goodsid;
    	
    	public String getGoodsid() {
    		return goodsid;
    	}
     
    	public void setGoodsid(String goodsid) {
    		this.goodsid = goodsid;
    	}
     
    	public void export() {
    		
    //		HttpServletRequest request = ServletActionContext.getRequest();
    		HttpServletResponse response=ServletActionContext.getResponse();
    		
    		// 获取数据
    		TestQuery testQuery = new TestQuery();
    		List<Goods> list = testQuery.queryGoods();
    		
    		//Excel标题
    		String[] title = {"学院","班级"};
    		
    		//Excel文件名
    		String fileName = "疫情信息表" + System.currentTimeMillis() + ".xls";
    		
    		//sheet名
    		String sheetName = "有钱人";
    		String[][] content = new String[list.size()][];
    		for(int i=0; i<list.size(); i++){
    			content[i] = new String[title.length];
    			Goods g = list.get(i);
    			content[i][0] = g.getGoodsid();
    			content[i][1] = g.getGoodsname();
    		}
    		
    		//创建HSSFWorkbook
    		HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
    		
    		try {
    			this.setResponseHeader(response, fileName);
    			OutputStream out = response.getOutputStream();
    			wb.write(out);
    			out.flush();
    			out.close();
    			wb.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
    	
    	 //发送响应流方法
        public void setResponseHeader(HttpServletResponse response, String fileName) {
            try {
               /* try {
                    fileName = new String(fileName.getBytes(),"ISO8859-1");
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }*/
                response.setContentType("application/octet-stream;charset=ISO8859-1");
                response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
                response.addHeader("Pargam", "no-cache");
                response.addHeader("Cache-Control", "no-cache");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    
    

    4.JSP页面表单提交请求:

    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="user!export.action" method="post">
    		<input id="gi" name="goodsid" type="hidden" value="" />
    		<button id="excel" type="submit">导出Excel</button>
    	</form>
    </body>
    </html>
    

    注意:如果遇到异常java.lang.NoSuchMethodException;

    解决方式:

    ①检查Action类是否实现ActionSupport接口,Action类中是否有调用的方法;

    ②检查jar包、该方法是否public修饰,是否有传参(Struts2不允许方法有参数);

    ③清理Tomcat缓存,重新部署项目。

  • 相关阅读:
    CSS的水平居中和垂直居中解决方案
    如何组织CSS?
    关于前端工程师一定要做的6件事和自己的感悟
    让透明div里的文字不透明
    利用css3的多背景图属性实现幻灯片切换效果
    CSS响应式布局到底是什么?
    整站快速变黑白灰的方法
    分析一下jquery中的ajax操作
    什么是jquery中的事件委派?
    关于checkbox的一些jquery操作
  • 原文地址:https://www.cnblogs.com/hackerZT-7/p/12579157.html
Copyright © 2020-2023  润新知