• jdbc 的连接
  • 实体类
  1. package com.gpdi.mdata.web.manage.database.data;
    public class DBQueryData {
    private String url;
    private String dbName;
    private String user;
    private String passwd;
    private String tableName;
    private String where;
  2.  
  3. public String getUrl() {
    return url;
    }
  4.  
  5. public void setUrl(String url) {
    this.url = url;
    }
  6.  
  7. public String getDbName() {
    return dbName;
    }
  8.  
  9. public void setDbName(String dbName) {
    this.dbName = dbName;
    }
  10.  
  11. public String getUser() {
    return user;
    }
  12.  
  13. public void setUser(String user) {
    this.user = user;
    }
  14.  
  15. public String getPasswd() {
    return passwd;
    }
  16.  
  17. public void setPasswd(String passwd) {
    this.passwd = passwd;
    }
  18.  
  19. public String getTableName() {
    return tableName;
    }
  20.  
  21. public void setTableName(String tableName) {
    this.tableName = tableName;
    }
  22.  
  23. public String getWhere() {
    return where;
    }
  24.  
  25. public void setWhere(String where) {
    this.where = where;
    }
  26.  
  27. @Override
    public String toString() {
    return "DBQueryData{" +
    "url='" + url + '\'' +
    ", dbName='" + dbName + '\'' +
    ", user='" + user + '\'' +
    ", passwd='" + passwd + '\'' +
    ", tablename='" + tableName + '\'' +
    ", where='" + where + '\'' +
    '}';
    }
    }
  1.  
  • JDBC封装
  1.  
  1. package com.gpdi.mdata.web.manage.database.utils;
    import com.gpdi.mdata.web.manage.database.data.DBQueryData;
  2.  
  3. import java.sql.Connection;
    import java.sql.DriverManager;
  4.  
  5. public class ConnectionManager {
    private static Connection conn=null;
    public ConnectionManager(){};
    static{
    try {
    Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
  6.  
  7. e.printStackTrace();
    }
    }
    public static Connection getConnection(DBQueryData dbQueryData){
    try {
    if(conn==null||conn.isClosed()) {
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://"+dbQueryData.getUrl()+"/"+dbQueryData.getDbName();
    String user = dbQueryData.getUser();
    String password = dbQueryData.getPasswd();
  8.  
  9. Class.forName(driver);
    conn = DriverManager.getConnection(url, user, password);
    System.out.println("数据库链接成功");
    } } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.out.println("数据库链接失败");
    }
  10.  
  11. return conn;
  12.  
  13. }
    public static void main(String[] args) {
  14.  
  15. }
  16.  
  17. }
  1.  
  1.  
  • 进行数据库查询,得到结果以对象方式存诸以便方便调用
  1.  
  1. package com.gpdi.mdata.web.manage.database.utils;
    import com.gpdi.mdata.web.manage.database.data.DBList;
    import com.gpdi.mdata.web.manage.database.data.DBQueryData;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
  2.  
  3. import java.sql.*;
    import java.util.*;
  4.  
  5. //jdbc链接数据库,获取表名,字段名和数据
    public class DBhepler {
    private Connection conn=null;
    private PreparedStatement ps=null;
    public DBList search(DBQueryData dbQueryData) throws Exception {
    DBList dbList=new DBList();
    String sql="";
  6.  
  7. conn = ConnectionManager.getConnection(dbQueryData);
    if(dbQueryData.getWhere()==null||dbQueryData.getWhere().equals("")){
    sql="select * from "+dbQueryData.getTableName();
    }
    else {
    sql="select * from "+dbQueryData.getTableName()+" where="+dbQueryData.getWhere();
    }
    // 获取所有表名
  8.  
  9. //Statement statement = conn.createStatement();
    PreparedStatement pst =conn.prepareStatement(sql);
    ResultSet resultSet=pst.executeQuery();
    ResultSetMetaData metaData = resultSet.getMetaData();
    //定义一个list去接受字段名
    List<String> list=new ArrayList<>();
    for (int i = 0; i < metaData.getColumnCount(); i++) {
    // resultSet数据下标从1开始
    String columnName = metaData.getColumnName(i + 1);
    int type = metaData.getColumnType(i + 1);
    if (Types.INTEGER == type) {
    // int
    } else if (Types.VARCHAR == type) {
    // String
    }
    list.add(columnName);
    System.out.print(columnName + "\t");
    }
    dbList.setRowTitle(list);
  10.  
  11. List<List<String>> valueList=new ArrayList<>();
    int j=0;
  12.  
  13. System.out.println();
    // 获取数据
    while (resultSet.next()) {
    List<String> colList=new ArrayList<>();
    for (int i = 0; i < metaData.getColumnCount(); i++) {
    // resultSet数据下标从1开始
    //System.out.print(resultSet.getString(i + 1) + "\t");
    colList.add(resultSet.getString(i + 1));
  14.  
  15. }
    valueList.add(colList);
  16.  
  17. j++;
    }
    dbList.setColCount(metaData.getColumnCount());
    dbList.setRowCount(j);
    dbList.setValueList(valueList);
  18.  
  19. pst.close();
    conn.close();
    //pst.close();
    // conn.close();
    return dbList;
    }
    @RequestMapping
    public Map<String, List<String>> SQLInsert(String [] zdName,List<List<Object>> list,DBQueryData dbQueryData){
  20.  
  21. Map<String, List<String>> resultMap=new HashMap<>();
    List<String>countList=new ArrayList<>();
    List<String> suList=new ArrayList();
    List<String> fiList=new ArrayList();
  22.  
  23. //sql
    int filed=0;
    int success=0;
    for(int li=0;li<list.size()-1;li++){
    //sql语句前部分
    StringBuffer sql=new StringBuffer();
    sql.append("insert into file_1 (");
    for (int zd=0;zd<zdName.length-1;zd++){
    //zdName[zd]=zdList.get(zd).toString();
    sql.append(zdName[zd]+",");
    }
  24.  
  25. sql.append(zdName[zdName.length-1]+") ");
    //sql后部分
    List valueList=list.get(li);
    StringBuffer sqlEnd=new StringBuffer();
    sqlEnd.append(" values(");
    for (int v=0;v<valueList.size()-1;v++){
    sqlEnd.append("'"+valueList.get(v)+"'"+",");
    }
    sqlEnd.append("'"+valueList.get(valueList.size()-1)+"'"+");");
    sql.append(sqlEnd);
    System.err.println("sql:"+sql);
    conn= ConnectionManager.getConnection(dbQueryData);
    try {
    ps=conn.prepareStatement(sql.toString());
    //ps.addBatch(insertSql);
    ps.executeUpdate();
    success++;
    suList.add(sql.toString());
    System.err.println("导入成功"+success);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    //e.printStackTrace();
    filed++;
    System.err.println("导入失败"+filed);
    System.err.println("失败sql:"+sql);
    fiList.add(sql.toString());
    //return null;
    }finally {
    System.err.println("导入完成");
  26.  
  27. }
  28.  
  29. }
  30.  
  31. try {
    conn.close();
    System.err.println("关闭数据库成功");
    } catch (SQLException e) {
    System.err.println("关闭数据库失败");
  32.  
  33. }
    countList.add(String.valueOf(success));
    countList.add(String.valueOf(filed));
    resultMap.put("count",countList);
    resultMap.put("success",suList);
    resultMap.put("filed",fiList);
    return resultMap;
  34.  
  35. }
  36.  
  37. }
  1.  
  1.  
  • excel的导出
  1.  
  1. @RequestMapping
    public static void exportToExcel(HttpServletRequest request,
    HttpServletResponse response,DBQueryData dbQueryData) {
    try {
    System.err.println(dbQueryData);
    String name =dbQueryData.getTableName();
    DBhepler dBhepler=new DBhepler();
    DBList dbList=dBhepler.search(dbQueryData);
    Workbook workbook = createWorkbook(dbList, name);
  2.  
  3. String attachmentName = name + ".xls";
  4.  
  5. String ua = request.getHeader("User-Agent");
    boolean isChrome = (ua != null && ua.contains("Chrome"));
  6.  
  7. try {
    if (isChrome) {
    attachmentName = java.net.URLEncoder.encode(attachmentName, "UTF-8");
    }
    else {
    attachmentName = new String(attachmentName.getBytes("GB2312"), "iso8859-1");
    }
    }
    catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
  8.  
  9. response.setHeader("Content-disposition", "attachment; filename=" + attachmentName);
    response.setContentType("application/msexcel");
    ServletOutputStream os = response.getOutputStream();
    workbook.write(os);
    os.close();
    }
    catch (Exception e) {
    throw new RuntimeException(e);
    }
    }
  10.  
  11. private static Workbook createWorkbook(DBList dbList, String name) throws Exception {
    String sheetName = name;
    Workbook workbook = new HSSFWorkbook();
    Sheet sheet = null;
    int a = dbList.getRowCount();
    if (a > 65535) {
    int length = a / 65535;
    for (int i = 0; i <= length; i++) {
    if (sheet != null) {
    sheet = null;
    }
    sheet = workbook.createSheet(sheetName + i);
    int colCount = dbList.getColCount();
    Row titleRow = sheet.createRow(0);
    List<String> RowList=dbList.getRowTitle();
    for(int j=0;j<RowList.size();j++){
    Cell cell = titleRow.createCell(j);
    cell.setCellValue(RowList.get(j));
    }
    if ((i + 1) * 65535 < a) {
    //for (int r = i * 65535; r < (i + 1) * 65535; r++) {
    List<List<String>> valueList= dbList.getValueList();
    for(int v=0;v<valueList.size();v++){
    Row row = sheet.createRow(v+ 1);
    List<String> lists=valueList.get(v);
    for (int l=0;l<lists.size();l++){
    Cell cell=row.createCell(l);
    cell.setCellValue(lists.get(l));
    }
  12.  
  13. }
  14.  
  15. //}
    }
    else {
    //for (int r = i * 65535; r < a; r++) {
    List<List<String>> valueList= dbList.getValueList();
    for(int v=0;v<valueList.size();v++){
    Row row = sheet.createRow(v+ 1);
    List<String> lists=valueList.get(v);
    for (int l=0;l<lists.size();l++){
    Cell cell=row.createCell(l);
    cell.setCellValue(lists.get(l));
    }
    }
    // }
    }
    }
    }
    else {
    sheet = workbook.createSheet(name);
    Row titleRow = sheet.createRow(0);
    List<String> RowList=dbList.getRowTitle();
    for(int j=0;j<RowList.size();j++){
    Cell cell = titleRow.createCell(j);
    cell.setCellValue(RowList.get(j));
    }
    List<List<String>> valueList= dbList.getValueList();
    for(int v=0;v<valueList.size();v++) {
    Row row = sheet.createRow(v + 1);
    List<String> lists = valueList.get(v);
    for (int l = 0; l < lists.size(); l++) {
    Cell cell = row.createCell(l);
    cell.setCellValue(lists.get(l));
    }
    }
    }
    return workbook;
    }
  1.  
  1.  
  • excel的导入
  1.  
  1. package com.gpdi.mdata.web.manage.database.utils;
  2.  
  3. import com.gpdi.mdata.web.manage.database.data.DBQueryData;
    import org.apache.poi.hssf.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  4.  
  5. import java.io.IOException;
    import java.io.InputStream;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.*;
  6.  
  7. public class ReadExcel {
  8.  
  9. public static void readExcel(InputStream file,String fileName,DBQueryData dbQueryData)throws IOException {
  10.  
  11. String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName
    .substring(fileName.lastIndexOf(".") + 1);
    if ("xls".equals(extension)) {
    read2003Excel(file,dbQueryData);
    } else if ("xlsx".equals(extension)) {
    read2007Excel(file);
    } else {
    //throw new IOException("不支持的文件类型");
    read2003Excel(file,dbQueryData);
    }
    }
  12.  
  13. public static Map<String, List<String>> read2003Excel(InputStream file,DBQueryData dbQueryData)
    {
    DBhepler dBhepler=new DBhepler();
    Map<String, List<String>> resultMap =new HashMap<>();
    List<List<Object>> list = new ArrayList<>();
    long Start;
    try (HSSFWorkbook hwb = new HSSFWorkbook(file)) {
  14.  
  15. System.err.println("sheet:" + hwb.getNumberOfSheets());
    Start = System.currentTimeMillis();
    HSSFSheet sheet = hwb.getSheetAt(0);
  16.  
  17. Object value = null;
    HSSFRow row = null;
    HSSFCell cell = null;
    int counter = 0;
    System.err.println("s"+sheet.getLastRowNum());
    //首行的内容,相当字段名
    Object firstValue=getFirstRow(sheet);
    String []ss=firstValue.toString().split(",");
    for (int l=0;l<ss.length;l++){
    System.err.println("ss:"+ss[l]);
    }
    //每行的每个单元格内容
    for (int i = 1; i <=sheet.getLastRowNum(); i++) {
    row = sheet.getRow(i);
    if (row == null) {
    continue;
    } else {
    counter++;
    }
    List<Object> linked = new ArrayList<>();
  18.  
  19. for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
    cell = row.getCell(j);
    Long ns=System.currentTimeMillis();
    if (cell == null) {
    continue;
    }
    Long ne=System.currentTimeMillis();
    DecimalFormat df = new DecimalFormat("0");// 格式化 number String
    // 字符
    SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
    DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
    switch (cell.getCellType()) {
    case XSSFCell.CELL_TYPE_STRING:
    Long Ss=System.currentTimeMillis();
  20.  
  21. value = cell.getStringCellValue();
    Long Se=System.currentTimeMillis();
    //System.out.println( "Strting开始:"+Ss+"结束:"+Se);
    break;
    case XSSFCell.CELL_TYPE_NUMERIC:
    Long nns=System.currentTimeMillis();
    System.out.println(i + "行" + j
    + " 列 is Number type ; DateFormt:"
    + cell.getCellStyle().getDataFormatString());
    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
    value = df.format(cell.getNumericCellValue());
    } else if ("General".equals(cell.getCellStyle()
    .getDataFormatString())) {
    value = nf.format(cell.getNumericCellValue());
    } else {
    value = sdf.format(HSSFDateUtil.getJavaDate(cell
    .getNumericCellValue()));
    }
    Long nne=System.currentTimeMillis();
    break;
    case XSSFCell.CELL_TYPE_BOOLEAN:
    System.out.println(i + "行" + j + " 列 is Boolean type");
    value = cell.getBooleanCellValue();
    break;
    case XSSFCell.CELL_TYPE_BLANK:
    System.out.println(i + "行" + j + " 列 is Blank type");
    value = "";
    break;
    default:
    System.out.println(i + "行" + j + " 列 is default type");
    value = cell.toString();
    }
    if (value == null || "".equals(value)) {
    continue;
    }
    linked.add(value);
    }
  22.  
  23. list.add(linked);
    System.err.println(i);
  24.  
  25. }
    long end=System.currentTimeMillis();
  26.  
  27. System.err.println("总的开始:" + Start + "结束:" + end);
  28.  
  29. resultMap= dBhepler.SQLInsert(ss, list, dbQueryData);}
    catch (Exception e){
  30.  
  31. }
    return resultMap;
    }
  32.  
  33. private static List<List<Object>> read2007Excel(InputStream file)
    throws IOException {
    List<List<Object>> list = new LinkedList<List<Object>>();
    // 构造 XSSFWorkbook 对象,strPath 传入文件路径
    XSSFWorkbook xwb = new XSSFWorkbook(file);
    // 读取第一章表格内容
    XSSFSheet sheet = xwb.getSheetAt(0);
    Object value = null;
    XSSFRow row = null;
    XSSFCell cell = null;
    int counter = 0;
    for (int i = sheet.getFirstRowNum(); counter < sheet
    .getPhysicalNumberOfRows(); i++) {
    row = sheet.getRow(i);
    if (row == null) {
    continue;
    } else {
    counter++;
    }
    List<Object> linked = new LinkedList<Object>();
    for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
    cell = row.getCell(j);
    if (cell == null) {
    continue;
    }
    DecimalFormat df = new DecimalFormat("0");// 格式化 number String
    // 字符
    SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
    DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
    switch (cell.getCellType()) {
    case XSSFCell.CELL_TYPE_STRING:
    //System.out.println(i + "行" + j + " 列 is String type");
    value = cell.getStringCellValue();
    break;
    case XSSFCell.CELL_TYPE_NUMERIC:
    System.out.println(i + "行" + j
    + " 列 is Number type ; DateFormt:"
    + cell.getCellStyle().getDataFormatString());
    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
    value = df.format(cell.getNumericCellValue());
    } else if ("General".equals(cell.getCellStyle()
    .getDataFormatString())) {
    value = nf.format(cell.getNumericCellValue());
    } else {
    value = sdf.format(HSSFDateUtil.getJavaDate(cell
    .getNumericCellValue()));
    }
    break;
    case XSSFCell.CELL_TYPE_BOOLEAN:
    System.out.println(i + "行" + j + " 列 is Boolean type");
    value = cell.getBooleanCellValue();
    break;
    case XSSFCell.CELL_TYPE_BLANK:
    System.out.println(i + "行" + j + " 列 is Blank type");
    value = "";
    break;
    default:
    System.out.println(i + "行" + j + " 列 is default type");
    value = cell.toString();
    }
    if (value == null || "".equals(value)) {
    continue;
    }
    linked.add(value);
    }
    list.add(linked);
    }
    return list;
    }
  34.  
  35. public static void main(String[] args) {
  36.  
  37. }
  38.  
  39. private static Object getFirstRow(HSSFSheet sheet){
  40.  
  41. Object value = "";
    HSSFRow row = null;
    HSSFCell cell = null;
    row = sheet.getRow(0);
    for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
    cell = row.getCell(j);
    if (cell == null) {
    continue;
    }
    DecimalFormat df = new DecimalFormat("0");// 格式化 number String
    // 字符
    SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
    DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
    switch (cell.getCellType()) {
    case XSSFCell.CELL_TYPE_STRING:
    //System.out.println(0 + "行" + j + " 列 is String type");
    value = value+cell.getStringCellValue()+",";
    break;
    case XSSFCell.CELL_TYPE_NUMERIC:
    System.out.println(0+ "行" + j
    + " 列 is Number type ; DateFormt:"
    + cell.getCellStyle().getDataFormatString());
    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
    value = df.format(cell.getNumericCellValue())+",";
    } else if ("General".equals(cell.getCellStyle()
    .getDataFormatString())) {
    value = value+nf.format(cell.getNumericCellValue())+",";
    } else {
    value =value+ sdf.format(HSSFDateUtil.getJavaDate(cell
    .getNumericCellValue()))+",";
    }
    break;
    case XSSFCell.CELL_TYPE_BOOLEAN:
    System.out.println(0 + "行" + j + " 列 is Boolean type");
    value = cell.getBooleanCellValue()+",";
    break;
    case XSSFCell.CELL_TYPE_BLANK:
    System.out.println(0 + "行" + j + " 列 is Blank type");
    value =value+ ""+",";
    break;
    default:
    System.out.println(0 + "行" + j + " 列 is default type");
    value = value+cell.toString()+",";
    }
    if (value == null || "".equals(value)) {
    continue;
    }
  42.  
  43. }
    //System.err.println("value:"+value);
    return value;
    }
    }
  1.  
  1.  
  • 调用csv
  1.  
  1. @RequestMapping
    public Map<String, List<String>> upload(HttpServletRequest request,DBQueryData dbQueryData) throws IOException {
    System.err.println("进来了。。。。");
    Map<String, List<String>> resultMap=new HashMap<>();
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    // 得到上传的文件
    MultipartFile mFile = multipartRequest.getFile("file");
    // 得到上传服务器的路径
    String path = request.getSession().getServletContext()
    .getRealPath("/WEB-INF/upload/");
    File file = new File(path);
    //判断上传文件的保存目录是否存在
    if (!file.exists() && !file.isDirectory()) {
    System.out.println(path+"目录不存在,需要创建");
    //创建目录
    file.mkdir();
    }
    // 得到上传的文件的文件名
    String filename = mFile.getOriginalFilename();
    InputStream inputStream = mFile.getInputStream();
    String extension = filename.lastIndexOf(".") == -1 ? "" : filename
    .substring(filename.lastIndexOf(".") + 1);
    if ("xls".equals(extension)) {
    //ReadExcel readExcel=new ReadExcel();
    resultMap= ReadExcel.read2003Excel(inputStream, dbQueryData);
    //inputStream.close();
  2.  
  3. //return resultMap;
    // ReadExcel.readExcel(inputStream, filename, dbQueryData);
    } else if ("csv".equals(extension)) {
    resultMap=CSVUtils.importCsv(inputStream,dbQueryData);
    } else {
    //throw new IOException("不支持的文件类型");
    //read2003Excel(file,dbQueryData);
    // return resultMap;
    }
  4.  
  5. // 文件流写到服务器端
    // FileOutputStream outputStream = new FileOutputStream(path);
    //outputStream.write(b, 0, length);
    //inputStream.close();
    //outputStream.close();
    inputStream.close();
    return resultMap;
    }
  1.  
  • csv的导入导出
  1.  
  1. package com.gpdi.mdata.web.manage.database.utils;
  2.  
  3. import com.gpdi.mdata.web.manage.database.data.DBList;
    import com.gpdi.mdata.web.manage.database.data.DBQueryData;
  4.  
  5. import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.util.*;
  6.  
  7. public class CSVUtils {
  8.  
  9. public static String TAB = "\r\n";
    static{
    Properties prop = System.getProperties();
    String os = prop.getProperty("os.name").toLowerCase();
    if(os.startsWith("win")){
    TAB = "\r\n";
    }else if(os.startsWith("linux") || os.startsWith("unix")){
    TAB = "\n";
    }else if(os.startsWith("mac")){
    TAB = "\r";
    }
    }
  10.  
  11. public static void exportCsv(HttpServletResponse response,DBQueryData dbQueryData) throwsException {
    String fileName=dbQueryData.getTableName()+".csv";
    DBhepler dBhepler=new DBhepler();
    DBList dbList=dBhepler.search(dbQueryData);
    List<String> titles=dbList.getRowTitle();
    List<List<String>> data=dbList.getValueList();
    StringBuffer sb = new StringBuffer();
    OutputStream outputStream = null;
    for (int i = 0; i < titles.size(); i++) {
    if(i != titles.size() - 1){
    sb.append(titles.get(i)).append(",");
    }else{
    sb.append(titles.get(i)).append(TAB);
    }
    }
  12.  
  13. for (int i = 0; i < data.size(); i++) {
    List<String> row = data.get(i);
    for(int j = 0 ; j < row.size(); j++ ){
    if(j != row.size() - 1){
    sb.append(row.get(j)).append(",");
    }else{
    sb.append(row.get(j)).append(TAB);
    }
    }
  14.  
  15. }
  16.  
  17. try {
  18.  
  19. response.addHeader("Content-Disposition","attachment;fileName=" + newString(fileName.getBytes("UTF-8"),"iso8859-1")); 
    //response.addHeader("Content-Length", "" + sb.length()); 
    //response.setContentType("application/csv;charset=UTF-8"); 
    response.setContentType("multipart/form-data");//设置文件ContentType类型,这样设置,会自动判断下载文件类型
    outputStream = response.getOutputStream();
  20.  
  21. outputStream.write(new byte []{( byte ) 0xEF ,( byte ) 0xBB ,( byte ) 0xBF });//加上bom头,才不会中文乱码 
    outputStream.write(sb.toString().getBytes("UTF-8"));
    outputStream.flush();
    } catch (IOException e) {
  22.  
  23. }finally{
    try {
    outputStream.close();
    } catch (IOException e) {
  24.  
  25. }
    }
    }
  26.  
  27. public static List<String> importCsv(File file){
    List<String> data = new ArrayList<String>();
    BufferedReader br = null;
    try {
    br = new BufferedReader(new FileReader(file));
    String line = "";
    while((line = br.readLine()) != null){
    data.add(line);
    }
    } catch (Exception e) {
  28.  
  29. }finally{
    try {
    br.close();
    } catch (IOException e) {
  30.  
  31. }
    }
  32.  
  33. return data;
    }
  34.  
  35. public static Map<String, List<String>> importCsv(InputStream inputStream,DBQueryData dbQueryData){
    List<String> data = new ArrayList<String>();
    Map<String, List<String>> resultMap=new HashMap<>();
    BufferedReader br = null;
    try {
    br = new BufferedReader(new InputStreamReader(inputStream,"Utf-8"));
    String line = "";
    while((line = br.readLine()) != null){
    data.add(line);
    } 
  36.  
  37. } catch (Exception e) {
  38.  
  39. }finally{
    try {
    br.close();
    inputStream.close();
    } catch (IOException e) {
  40.  
  41. }
  42.  
  43. }
  44.  
  45. List<List<Object>> result=new ArrayList<>();
    DBhepler dBhepler=new DBhepler();
    if(data.size()>0) {
    for (int i = 0; i < data.size(); i++) {
    List<Object> valueList = new ArrayList();
    if (i != 0) {
    String cont[] = data.get(i).replace(""", "").split(",");
    for (int j = 0; j < cont.length; j++) {
    valueList.add(cont[j]);
    }
    result.add(valueList);
    }
    System.err.println("csv:" + data.get(i).replace(""",""));
    }
    String zdName[] = data.get(0).replace(""", "").split(",");
    resultMap=dBhepler.SQLInsert(zdName, result, dbQueryData);
  46.  
  47. }
    else {
    return resultMap;
    }
    return resultMap;
    }
  48.  
  49. }
  1.  
 

java 调用jdbc 实现excel和csv的导入和导出的更多相关文章

  1. php中excel以及cvs等导入以及导出

    一般网站后台都有人员导入或者是订单导出之类的操作,今天分享一下几种php excel cvs等文件导入导出的办法. 第一种比较简单的,自己写的,不引用任何excel类.但是会有bug,代码如下: 首先 ...

  2. 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

    前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...

  3. java调用POI读取Excel

    HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls:XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx: 1.注意点 getPhy ...

  4. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  5. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)

    先上图: 文件上传的: 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 2019-03-26更新进度条显示体验 从服务器上压缩下载: 从 ...

  6. mysql的csv数据导入与导出

    # 需要station_realtime存在 load data infile 'd:/xxxx/station_realtime2013_01.csv' into table `station_re ...

  7. java使用POI操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  8. js原生导出excel和csv

    ​ 严格意义来说并不是真正的excel文件,只是可以用excel打开查看而已,实际上的格式是逗号分隔文件即csv文件. 这里有几个坑要说一下: 不加Unicode的utf8头部标识excel打开文件会 ...

  9. Java导出Excel和CSV(简单Demo)

    Java导出Excel和CSV的简单实现,分别使用POI和JavaCSV. JavaBean public class ReportInfo { int id; String date; int nu ...

随机推荐

  1. 全国计算机等级考试二级教程-C语言程序设计_第11章_对函数的进一步讨论

    无论传递什么参数,函数都有副本机制 改变一个变量,需要传入变量的地址 改变一个指针变量,需要传入指针变量的地址 //int add(int a, int b);挖取函数声明 //int ()(int ...

  2. php 获取汉字拼音首字母的函数

    function getFirstChar($string){ if($string{0}>="A" and $string{0}<="z" )re ...

  3. 获取UIButton的一些属性

    获取文字  button.currentTitle 更多如下: @property(nullable, nonatomic,readonly,strong) NSString *currentTitl ...

  4. 剑指offer第10题

    import java.util.Scanner; /* 前两种方法是看最低为是不是为1,不为1则向右移动. 第一种只能对正整数有效,对负数不行,因为负数用的是补码,最高外符号位为1,最后右移动,肯定 ...

  5. 【转】java jawin api 中文 invoke方法

    org.jawin Class FuncPtr java.lang.Object org.jawin.FuncPtr ----------------------------------------- ...

  6. 指针直接赋值为整型AND利用宏定义求结构体成员偏移量

    首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”. 指针初始化时,“=”的右操作数; 除外,该语句表示指针为空): 所以 ; 这样的代码是不允许的. ...

  7. Ubuntu14.04(64位)安装ATI_Radeon_R7_M265显卡驱动

    电脑型号:Dell inspiron 14-5447 笔记本 显卡配置:集成显卡Intel核心显卡,Cpu是i5-4210U;独立显卡ATI_Radeon_R7_M265 网上关于ATI/Intel双 ...

  8. 关于FIND_IN_SET 和distinct 的坑爹的一天

    FIND_IN_SET的使用,前面介绍过,distinct是结果去重复的函数,两者结合使用,却花费了我一天的光阴. 1.先面试含有重复值正确的显示顺序select  lIdfrom tbCourse1 ...

  9. EcShop后台添加菜单[步骤]

    1. 添加菜单的链接地址:打开文件[/后台目录/includes/inc_menu.php],在结尾加入例如:$modules['dashi']['dashi_list'] = 'join_dashi ...

  10. 让2个并列的div根据内容自动保持同等高度js

    有左右2个并列的div,2个div都不能限定高度.左div为导航,右div为内容.如何能让左div块自动获得和右div块相等的高度? 同时,也有网友提问到“如果右块高度比左块低,会不会导致左块的内容被 ...