java数据库数据导入excel

data导出入excel中

controller:

package com.longfor.hrssc.api.controller;

import com.longfor.hrssc.api.model.BasicInformation;
import com.longfor.hrssc.api.service.IBasicInformationService;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by fmgao on 2019/5/5.
 */
@RestController
@RequestMapping("/export")
public class ExportExcel {
    @Autowired
    private IBasicInformationService basicInformationService;

    @RequestMapping(value = "/excel", method = RequestMethod.GET)
    public Object excel2(HttpServletResponse response) throws Exception {
//        list = getUsers();
        String columnName = "t_basic_information";
        BasicInformation basicInformation = new BasicInformation();
        basicInformation.setTableName(columnName);
        List<String> titles = new ArrayList();
        titles = basicInformationService.getColumnNames(basicInformation);
        System.out.println(titles);
        List<BasicInformation> list = new ArrayList();
        list = basicInformationService.getAllDatas(basicInformation);

        stuList2Excel(list,titles);
        return null;
    }

    /**
     * @param stuList 从数据库中查询需要导入excel文件的信息列表
     * @return 返回生成的excel文件的路径
     * @throws Exception
     */
    public static String stuList2Excel(List<BasicInformation> stuList,List<String> titles) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd hhmmss");
        Workbook wb = new XSSFWorkbook();
        //标题行抽出字段
//        String[] title = titles;
        //设置sheet名称,并创建新的sheet对象
        String sheetName = "学生信息一览";
        Sheet stuSheet = wb.createSheet(sheetName);
        //获取表头行
        Row titleRow = stuSheet.createRow(0);
        //创建单元格,设置style居中,字体,单元格大小等
        CellStyle style = wb.createCellStyle();
        Cell cell = null;
        //把已经写好的标题行写入excel文件中
        for (int i = 0; i < titles.size(); i++) {
            cell = titleRow.createCell(i);
            cell.setCellValue(titles.get(i));
            cell.setCellStyle(style);
        }
        //把从数据库中取得的数据一一写入excel文件中
        Row row = null;
        for (int i = 0; i < stuList.size(); i++) {
            //创建list.size()行数据
            row = stuSheet.createRow(i + 1);
            //把值一一写进单元格里
            //设置第一列为自动递增的序号
//            row.createCell(0).setCellValue(i + 1);
            row.createCell(0).setCellValue(stuList.get(i).getId());
            row.createCell(1).setCellValue(stuList.get(i).getBasicCode());
            row.createCell(2).setCellValue(stuList.get(i).getBasicName());
            row.createCell(3).setCellValue(stuList.get(i).getBasicType());
            row.createCell(4).setCellValue(stuList.get(i).getBasicPid());
            row.createCell(5).setCellValue(stuList.get(i).getIsDelete());
            row.createCell(6).setCellValue(stuList.get(i).getCreateUserId());
            //把时间转换为指定格式的字符串再写入excel文件中
            if (stuList.get(i).getCreateTime() != null) {
                row.createCell(7).setCellValue(sdf.format(stuList.get(i).getCreateTime()));
            }
            if (stuList.get(i).getUpdateTime() != null) {
                row.createCell(8).setCellValue(sdf.format(stuList.get(i).getUpdateTime()));
            }

        }
        //设置单元格宽度自适应,在此基础上把宽度调至1.5倍
        for (int i = 0; i < titles.size(); i++) {
            stuSheet.autoSizeColumn(i, true);
            stuSheet.setColumnWidth(i, stuSheet.getColumnWidth(i) * 15 / 10);
        }
        //获取配置文件中保存对应excel文件的路径,本地也可以直接写成F:excel/stuInfoExcel路径
//        String folderPath = ResourceBundle.getBundle("systemconfig").getString("downloadFolder") + File.separator + "stuInfoExcel";
        String folderPath = "F:\\file_soft\\me\\excel\\";
        //创建上传文件目录
        File folder = new File(folderPath);
        //如果文件夹不存在创建对应的文件夹
        if (!folder.exists()) {
            folder.mkdirs();
        }
        //设置文件名
        String fileName = sdf1.format(new Date()) + sheetName + ".xlsx";
        String savePath = folderPath + File.separator + fileName;
        // System.out.println(savePath);

        OutputStream fileOut = new FileOutputStream(savePath);
        wb.write(fileOut);
        fileOut.close();
        //返回文件保存全路径
        System.out.println(savePath);
        return savePath;
    }
}

sevice:

/**
     * 获取所有的列
     * @param basicInformation
     * @return
     */
    public List<String> getColumnNames(BasicInformation basicInformation){
        List<String> names = basicInformationMapper.getColumnNames(basicInformation);
        return names;
    }

    /**
     * 获取所有的数据
     * @param basicInformation
     * @return
     */
    public List<BasicInformation> getAllDatas(BasicInformation basicInformation){
        List<BasicInformation> list = basicInformationMapper.getAllDatas(basicInformation);
        return list;
    }

dao:

    List<String> getColumnNames(BasicInformation basicInformation);

    List<BasicInformation> getAllDatas(BasicInformation basicInformation);

xml:

<!--getColumnNames-->
<select id="getColumnNames" resultType="java.lang.String"
        parameterType="com.longfor.hrssc.api.model.BasicInformation">
    select DISTINCT COLUMN_NAME from information_schema.COLUMNS where table_name=#{tableName}
</select>

<!--get all-->
<select id="getAllDatas" resultMap="BaseResultMap"
        parameterType="com.longfor.hrssc.api.model.BasicInformation">
    select * from t_basic_information;
</select>

pom:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.16</version>
</dependency>

原文地址:https://www.cnblogs.com/fmgao-technology/p/10821245.html

时间: 2024-11-10 16:13:42

java数据库数据导入excel的相关文章

Java将数据库数据导入EXCEL

一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现 须要导入一个第三方包下载地址 详细内容例如以下: 里面含有指导文档,index.html里面含有怎样读取数据库文件到excel和excel数据到数据库中. 主要用到一个包 将这个包复制到项目里面就能够了. 先做一个简单版本号的helloword <span style="white-space:pre"> </span>public void mkexcel() throws

PHP把数据库数据导入Excel

<?php function xlsBOF() { echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); return; } function xlsEOF() { echo pack("ss", 0x0A, 0x00); return; } function format( $STR ){ $STR = str_replace( "\"", "", $ST

[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中

实际的开发中,我们会经常遇到数据的转化的需要,将Excel中的数据转入到SQL中,或将SQL在数据库表中的数据导入到Excel中.代码如下: Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo

C#变成数据导入Excel和导出Excel

excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就没问题了. •使用区域(usedrange):用excel 表的时候不一定是从最左上角的单元格开始用,为了减小文件尺寸,有使用区域的概念,excel 只存储使用区域. 程序处理excel 的技术 •ole automation:程序启动一个excel 进程,然后和excel 进程进行通讯来进行exc

数据库数据用Excel导出的3种方法

将数据库数据用Excel导出主要有3种方法:用Excel.Application接口.用OleDB.用HTML的Tabel标签 方法1——Excel.Application接口: 首先,需要要Excel.dll这个文件,确保自身机器上装有MS Office,在Office安装目录(../Microsoft Office/OFFICE11/,具体目录取决于自己的安装)中找到Excel.exe,然后放在(../Microsoft Visual Studio 8/SDK/v2.0/Bin)目录中,在C

C#语言将 mysql数据库表格导入excel的函数

private void DataTabletoExcel(System.Data.DataTable tmpDataTable, string strFileName) { if (tmpDataTable == null) { return; } int rowNum = tmpDataTable.Rows.Count;//行 int columnNum = tmpDataTable.Columns.Count;//列 int rowIndex = 1;//行 int columnIndex

通过模板将数据导入EXCEL

在EXCEL模板里设置好样式和格式 点击事件 private void btnReport_Click(object sender, EventArgs e)        {            //将数据导入Excel中并设置Excel基本样式            ExcelHandle excelHandle = new ExcelHandle();            excelHandle.GenerateStudentsReports(this.dgvStudents);