`
兢兢业业小码农
  • 浏览: 5848 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Excel根据模板导出+Spring读取配置文件+动态读取sql文件

阅读更多
  1. 用到技术
    1. poi 3.11
    2. Spring 4.1.4
  2. 代码如下
    1. package com.fh.server.util;
      
      import java.io.BufferedInputStream;
      import java.io.BufferedReader;
      import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.InputStream;
      import java.io.InputStreamReader;
      import java.net.URL;
      import java.sql.DriverManager;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Properties;
      
      import org.apache.poi.hssf.usermodel.HSSFCell;
      import org.apache.poi.hssf.usermodel.HSSFCellStyle;
      import org.apache.poi.hssf.usermodel.HSSFFont;
      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.poifs.filesystem.POIFSFileSystem;
      
      import com.mysql.jdbc.Connection;
      
      public class SqlManager {
      
      	private static SqlManager sqlManager = null;
      
      	private static Connection con;
      	private static Map<String, String> sqls = new HashMap<String, String>();
      	private static File fi = null;
      	static String fileName;
      	private static POIFSFileSystem fs;
      	private static HSSFWorkbook wb = null;
      	private static FileOutputStream out;
      	static String[] sql;
      	private static String url = "";
      
      	private SqlManager() {
      		try {
      			// excel模板路径
      			URL excelUrl = SqlManager.class.getClassLoader().getResource("template.xls");
      			String path = excelUrl.getPath();
      			fi = new File(path);
      			fs = new POIFSFileSystem(new FileInputStream(fi));
      			// // 读取excel模板
      			wb = new HSSFWorkbook(fs);
      			SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHMM");
      			fileName = path + "数据分析(信息化问卷调查系统)_" + format.format(new Date()) + ".xls";
      			Class.forName("com.mysql.jdbc.Driver");
      			Class.forName("com.mysql.jdbc.Driver").newInstance();
      			url = GetJDBCUrl();
      			con = (Connection) DriverManager.getConnection(url);
      			sql = getSql(SqlManager.class, "votereports").split(";");
      		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException
      				| IOException e) {
      			e.printStackTrace();
      		}
      	}
      
      	public static SqlManager getInstance() {
      		if (sqlManager == null) {
      			sqlManager = new SqlManager();
      		}
      		return sqlManager;
      	}
      
      
      	public static <T> String getSql(Class<T> resourceClass, String id) {
      		String key = resourceClass.getName() + "." + id;
      		String sql = (String) sqls.get(key);
      		if (sql == null) {
      			sql = readFromFile(resourceClass, id);
      		}
      		return sql;
      	}
      
      	private static <T> String readFromFile(Class<T> resourceClass, String id) {
      		// System.out.println(resourceClass.getName());
      		String content = "";
      		InputStream inputstream = null;
      		InputStreamReader reader = null;
      		BufferedReader br = null;
      		try {
      			String sqlfile = id + ".sql";
      			inputstream = resourceClass.getResourceAsStream(sqlfile);
      			if (inputstream == null) {
      				return null;
      			}
      			reader = new InputStreamReader(inputstream, "utf-8");
      
      			br = new BufferedReader(reader);
      			String line = null;
      			while ((line = br.readLine()) != null) {
      				content += line + "\n";
      			}
      			System.out.println(content);
      		} catch (IOException ex2) {
      			ex2.printStackTrace();
      		} finally {
      			if (inputstream != null) {
      				try {
      					inputstream.close();
      				} catch (IOException ex) {
      				}
      			}
      
      		}
      
      		return content;
      	}
      
      	public static void main(String[] args) throws FileNotFoundException {
      
      		SqlManager sqlmgr = new SqlManager();
      		try {
      			fs = new POIFSFileSystem(new FileInputStream(sqlmgr.fi));
      			// 读取excel模板
      			wb = new HSSFWorkbook(fs);
      		} catch (IOException e1) {
      			e1.printStackTrace();
      			System.out.println();
      		}
      
      		if (con != null) {
      			setExcel(sql, wb);
      			try {
      				out = new FileOutputStream(fileName);
      				wb.write(out);
      				out.close();
      			} catch (IOException e) {
      				e.printStackTrace();
      			}
      		}
      
      	}
      
      	// 读取Properties的全部信息
      	private static String GetJDBCUrl() throws IOException {
      		String filePath = SqlManager.class.getClassLoader().getResource("config.properties").getPath();
      		Properties pps = new Properties();
      		InputStream in = new BufferedInputStream(new FileInputStream(filePath));
      		pps.load(in);
      		String baseUrl = pps.getProperty("jdbc.url");
      		String username = pps.getProperty("jdbc.username");
      		String pwd = pps.getProperty("jdbc.password");
      		return baseUrl + "&user=" + username + "&password=" + pwd;
      	}
      
      	private static void setExcel(String[] sql, HSSFWorkbook wb) {
      		HSSFSheet sheet = null;
      		HSSFCellStyle cellStyle = null;
      		HSSFFont font = null;
      
      		for (int i = 0; i < sql.length; i++) {
      			// 读取了模板内所有sheet内容
      			sheet = wb.getSheetAt(i);
      			cellStyle = wb.createCellStyle();
      			font = wb.createFont();
      			font.setFontName("微软雅黑");
      			font.setFontHeightInPoints((short) 10);// 设置字体大小
      			cellStyle.setFont(font);
      			cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
      			cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
      			cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
      			cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
      
      			// 修改模板内容导出新模板
      			try {
      				ResultSet set = con.createStatement().executeQuery(sql[i]);
      				int numberofrows = set.getMetaData().getColumnCount();
      				// List setData = resultSetToList(set);
      				int rowNm = 1;
      				while (set.next()) {
      					HSSFRow row = sheet.createRow(rowNm);
      					// row.setRowStyle(cellStyle);
      					for (int j = 1; j <= numberofrows; j++) {
      						HSSFCell cell = row.createCell(j - 1);
      						cell.setCellStyle(cellStyle);
      						cell.setCellValue(set.getString(j));
      					}
      					rowNm++;
      				}
      			} catch (SQLException e) {
      				e.printStackTrace();
      			}
      		}
      
      	}
      
      	public static String getSql(Object obj, String id) {
      		return getSql(obj.getClass(), id);
      	}
      
      	public static HSSFWorkbook getWorkBook() {
      		SqlManager sqlmgr = new SqlManager();
      		if (con == null) {
      			try {
      				con = (Connection) DriverManager.getConnection(url);
      			} catch (SQLException e) {
      				e.printStackTrace();
      			}
      		}
      		setExcel(sql, wb);
      //		try {
      //			out = new FileOutputStream(fileName);
      //			con.close();
      //			return out;
      //		} catch (FileNotFoundException | SQLException e) {
      //			e.printStackTrace();
      //			return null;
      //		}
      		return wb;
      	}
      	
      }
      
       
分享到:
评论

相关推荐

    Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包

    标题中的"Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包"涉及到一系列在Java开发中常用的框架和技术,这是一套集成的开发环境,可以帮助开发者快速搭建企业级应用。下面将对这些技术...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    总的来说,这个项目展示了如何在Java环境中,结合Spring Boot的便利性,利用MyBatis进行数据库操作,借助Apache POI处理Excel文件,以及Thymeleaf生成动态页面,实现数据的导入导出功能。这是一个综合性的Java Web...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    这个压缩包文件“struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip”显然是一个整合了这些技术的示例项目,用于演示如何在实际开发中实现数据处理、视图展示以及文件导出功能。 首先,Struts2 ...

    struts2_spring_ibatis根据模板文件导出Excel

    在这个项目中,“struts2_spring_ibatis根据模板文件导出Excel”是利用这三大框架实现了一个功能,即根据预设的模板文件生成并导出Excel电子表格。 首先,Struts2是基于Model-View-Controller(MVC)架构的Web应用...

    SpringBoot +Mybatis +POI导入、导出Excel文件

    本项目通过集成这三个组件,实现了Excel文件的导入与导出功能,为业务流程提供了便捷的数据交互手段。 首先,我们来了解一下SpringBoot。SpringBoot是Spring框架的简化版,它简化了配置和项目初始化过程,通过内置...

    spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库.zip

    开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据导出为Excel格式,同时也能将Excel文件的数据导入到数据库中。下面将详细介绍这些技术及其应用。 ...

    Easyui.+.Spring.Mvc导出Excel

    后端服务根据模板来填充数据,这样既保证了导出格式的一致性,又可以满足用户的个性化需求。 为了实现以上功能,开发人员需要对Java、Spring MVC、Easyui和Apache POI有深入的理解。在调试和优化过程中,性能问题也...

    springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出

    在本项目中,"springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出",开发者旨在构建一个基于SpringMVC、MyBatis、MySQL数据库,利用Log4jdbc记录SQL日志,并通过Jxls进行Excel数据导出的功能完善的...

    Springboot+Poi实现Excel的导入导出

    在Spring Boot项目中,可以通过配置MyBatis的 Starter 来快速建立连接,定义Mapper接口并编写对应的XML映射文件,实现数据的CRUD(创建、读取、更新、删除)操作。 1. **Excel导出**: - 使用POI库,可以创建...

    java读取数据库表中内容转存sql文件,然后解析执行此文件

    在Java编程中,读取数据库表中的内容并将其转换为SQL文件,然后解析并执行这个文件,是一项常见的数据处理任务。这项操作可能涉及到数据库连接、数据查询、文件操作以及SQL语句的构建与执行。以下将详细介绍这个过程...

    Excel 导出 struts2 spring hibernate

    标题 "Excel 导出 struts2 spring hibernate" 暗示了这是一个关于使用Java Web开发框架Struts2、Spring和Hibernate实现Excel数据导入导出的教程或项目。这三个框架是Java后端开发中常见的技术栈,Struts2用于控制...

    JXLS将数据库取得的数据根据Excel模板导出

    首先,它创建一个唯一的导出文件名,然后读取模板文件并进行转换。`beanParams` 参数用于传递数据,其中 `results` 键对应于查询结果。`XLSTransformer` 类负责实际的转换工作,将模板与数据结合,生成最终的Excel...

    Spring3 MVC + POI 实现 Excel与MySQL 的导入导出

    本主题聚焦于如何利用Spring3 MVC框架结合Apache POI库来实现在Java环境中Excel与MySQL数据库之间的数据导入与导出。 Spring3 MVC是Spring框架的一个组件,专门用于构建Web应用程序,它提供了模型-视图-控制器(MVC...

    springboot+mybatis+poi 实现excel导入导出

    在我们的场景中,我们将主要关注POI对于Excel的处理能力,它能读取、创建、修改Excel文件,并且提供了丰富的API来处理单元格、行、列等元素。 实现Excel导入导出的关键步骤如下: 1. **添加依赖**:在SpringBoot...

    SpringMVC+mybaits+Spring

    例如,可以通过POI读取Excel文件,将其数据映射为Java对象,然后利用MyBatis批量插入到数据库;或者反之,从数据库中查询数据,用POI生成Excel报表供用户下载。 综上所述,这个项目或教程涵盖了使用Spring MVC进行...

    ssm+分页+导入导出excel文件

    在描述中提到的“ssm+分页+导入导出excel文件”,我们可以深入探讨以下几个知识点: 1. **Spring框架**:Spring是Java企业级应用的核心框架,提供了IoC和AOP,用于解耦应用程序的组件,简化开发过程。通过依赖注入...

    ssm+ maven+excel导入导出源码

    在这个“ssm+maven+excel导入导出源码”项目中,我们可以看到开发者提供了实现Excel数据导入导出功能的源代码,这在诸如数据处理、报表生成等场景中非常实用。 1. **Spring框架**:Spring是Java企业级应用的核心...

    SSM框架利用poi导入导出Excel文件 demo

    在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...

    Spring MVC+Spring+Mybatis+poi+xml全部jar包

    这个压缩包提供了所有必要的jar文件,使得新手能够快速搭建一个支持Excel交互的SSM(Spring、Spring MVC、Mybatis)应用。对于初学者来说,这是一个很好的起点,涵盖了Web开发中的主要组件和技术。

Global site tag (gtag.js) - Google Analytics