使用java代码将MySQL数据库导出到excel

使用java代码将MySQL数据库导出到excel,java,mysql,jexcelapi,Java,Mysql,Jexcelapi,我想将MySQL数据库导出为.xls或.txt格式。我如何用java实现它。我想做的是,在我的应用程序中有一个按钮,按下该按钮,我的数据库将导出到excel文件。 谢谢。对MySQL进行系统调用: mysql -e'SELECT * FROM table'>file.csv 导出整个数据库的最简单方法是使用本机数据库工具。看看这篇文章: 或者,您可以使用JDBC或ORM实现代码,这些代码连接到DB,使用您想要的任何格式读取和写入数据 您可以使用并生成任意格式的数据库。如果您使用的是str

我想将MySQL数据库导出为.xls或.txt格式。我如何用java实现它。我想做的是,在我的应用程序中有一个按钮,按下该按钮,我的数据库将导出到excel文件。
谢谢。

对MySQL进行系统调用:

mysql -e'SELECT * FROM table'>file.csv

导出整个数据库的最简单方法是使用本机数据库工具。看看这篇文章:

或者,您可以使用JDBC或ORM实现代码,这些代码连接到DB,使用您想要的任何格式读取和写入数据

您可以使用并生成任意格式的数据库。如果您使用的是struts2,则可以使用
datagrid
将其导出为CSV或Excel

您可能会发现它很有帮助:

SELECT ....... INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table  
您可以使用和。

使用此代码

它适用于.xls文件

package com.demo.export;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class dataExportService {
    public void getDefendants(Connection con , String db) throws Exception  { 
        @SuppressWarnings("unused")
        Workbook readWorkbook = WorkbookFactory.create(new FileInputStream("C:\\Users\\CEPL\\Desktop\\test.xls") );
        @SuppressWarnings("resource")
        Workbook writeWorkbook = new HSSFWorkbook();
        Sheet desSheet = writeWorkbook.createSheet("new sheet");

        Statement stmt = null;
        ResultSet rs = null;
        try{
            String query ="SELECT * FROM "+db;

            stmt = con.createStatement();
            rs = stmt.executeQuery(query);
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnsNumber = rsmd.getColumnCount();

            Row desRow1 = desSheet.createRow(0);
            for(int col=0 ;col < columnsNumber;col++) {
                Cell newpath = desRow1.createCell(col);
                newpath.setCellValue(rsmd.getColumnLabel(col+1));
            }
            while(rs.next()) {
                System.out.println("Row number" + rs.getRow() );
                Row desRow = desSheet.createRow(rs.getRow());
                for(int col=0 ;col < columnsNumber;col++) {
                    Cell newpath = desRow.createCell(col);
                    newpath.setCellValue(rs.getString(col+1));  
                }
                FileOutputStream fileOut = new FileOutputStream("C:\\Users\\CEPL\\Desktop\\test.xls");
                writeWorkbook.write(fileOut);
                fileOut.close();
            }
        }
        catch (SQLException e) {
            System.out.println("Failed to get data from database");
        }
    }

}
package com.demo.export;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.sql.Connection;
导入java.sql.ResultSet;
导入java.sql.ResultSetMetaData;
导入java.sql.SQLException;
导入java.sql.Statement;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.Sheet;
导入org.apache.poi.ss.usermodel.工作簿;
导入org.apache.poi.ss.usermodel.WorkbookFactory;
公共类数据导出服务{
public void GetDefendents(连接con,字符串db)引发异常{
@抑制警告(“未使用”)
工作簿readWorkbook=WorkbookFactory.create(新文件输入流(“C:\\Users\\CEPL\\Desktop\\test.xls”);
@抑制警告(“资源”)
工作簿writeWorkbook=新的HSSFWorkbook();
Sheet desSheet=writeWorkbook.createSheet(“新工作表”);
语句stmt=null;
结果集rs=null;
试一试{
String query=“SELECT*FROM”+db;
stmt=con.createStatement();
rs=stmt.executeQuery(查询);
ResultSetMetaData rsmd=rs.getMetaData();
int columnsumber=rsmd.getColumnCount();
行desRow1=desSheet.createRow(0);
for(int col=0;col
可以接受.csv文件吗?它们可以在excel中打开,但没有格式,也不允许包含多个表的工作簿。请尝试此操作。这不是CSV。这将创建以制表符分隔的值。但你是对的:这个文件可以导入Excel。@AlexR讽刺的是,CSV不必用逗号分隔: