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 架包"涉及到一系列在Java开发中常用的框架和技术,这是一套集成的开发环境,可以帮助开发者快速搭建企业级应用。下面将对这些技术...
总的来说,这个项目展示了如何在Java环境中,结合Spring Boot的便利性,利用MyBatis进行数据库操作,借助Apache POI处理Excel文件,以及Thymeleaf生成动态页面,实现数据的导入导出功能。这是一个综合性的Java Web...
这个压缩包文件“struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip”显然是一个整合了这些技术的示例项目,用于演示如何在实际开发中实现数据处理、视图展示以及文件导出功能。 首先,Struts2 ...
在这个项目中,“struts2_spring_ibatis根据模板文件导出Excel”是利用这三大框架实现了一个功能,即根据预设的模板文件生成并导出Excel电子表格。 首先,Struts2是基于Model-View-Controller(MVC)架构的Web应用...
本项目通过集成这三个组件,实现了Excel文件的导入与导出功能,为业务流程提供了便捷的数据交互手段。 首先,我们来了解一下SpringBoot。SpringBoot是Spring框架的简化版,它简化了配置和项目初始化过程,通过内置...
开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据导出为Excel格式,同时也能将Excel文件的数据导入到数据库中。下面将详细介绍这些技术及其应用。 ...
后端服务根据模板来填充数据,这样既保证了导出格式的一致性,又可以满足用户的个性化需求。 为了实现以上功能,开发人员需要对Java、Spring MVC、Easyui和Apache POI有深入的理解。在调试和优化过程中,性能问题也...
在本项目中,"springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出",开发者旨在构建一个基于SpringMVC、MyBatis、MySQL数据库,利用Log4jdbc记录SQL日志,并通过Jxls进行Excel数据导出的功能完善的...
在Spring Boot项目中,可以通过配置MyBatis的 Starter 来快速建立连接,定义Mapper接口并编写对应的XML映射文件,实现数据的CRUD(创建、读取、更新、删除)操作。 1. **Excel导出**: - 使用POI库,可以创建...
在Java编程中,读取数据库表中的内容并将其转换为SQL文件,然后解析并执行这个文件,是一项常见的数据处理任务。这项操作可能涉及到数据库连接、数据查询、文件操作以及SQL语句的构建与执行。以下将详细介绍这个过程...
标题 "Excel 导出 struts2 spring hibernate" 暗示了这是一个关于使用Java Web开发框架Struts2、Spring和Hibernate实现Excel数据导入导出的教程或项目。这三个框架是Java后端开发中常见的技术栈,Struts2用于控制...
首先,它创建一个唯一的导出文件名,然后读取模板文件并进行转换。`beanParams` 参数用于传递数据,其中 `results` 键对应于查询结果。`XLSTransformer` 类负责实际的转换工作,将模板与数据结合,生成最终的Excel...
本主题聚焦于如何利用Spring3 MVC框架结合Apache POI库来实现在Java环境中Excel与MySQL数据库之间的数据导入与导出。 Spring3 MVC是Spring框架的一个组件,专门用于构建Web应用程序,它提供了模型-视图-控制器(MVC...
在我们的场景中,我们将主要关注POI对于Excel的处理能力,它能读取、创建、修改Excel文件,并且提供了丰富的API来处理单元格、行、列等元素。 实现Excel导入导出的关键步骤如下: 1. **添加依赖**:在SpringBoot...
例如,可以通过POI读取Excel文件,将其数据映射为Java对象,然后利用MyBatis批量插入到数据库;或者反之,从数据库中查询数据,用POI生成Excel报表供用户下载。 综上所述,这个项目或教程涵盖了使用Spring MVC进行...
在描述中提到的“ssm+分页+导入导出excel文件”,我们可以深入探讨以下几个知识点: 1. **Spring框架**:Spring是Java企业级应用的核心框架,提供了IoC和AOP,用于解耦应用程序的组件,简化开发过程。通过依赖注入...
在这个“ssm+maven+excel导入导出源码”项目中,我们可以看到开发者提供了实现Excel数据导入导出功能的源代码,这在诸如数据处理、报表生成等场景中非常实用。 1. **Spring框架**:Spring是Java企业级应用的核心...
在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...
这个压缩包提供了所有必要的jar文件,使得新手能够快速搭建一个支持Excel交互的SSM(Spring、Spring MVC、Mybatis)应用。对于初学者来说,这是一个很好的起点,涵盖了Web开发中的主要组件和技术。