如何用JAVA将数据库中的数据导入到excel表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用JAVA将数据库中的数据导入到excel表格相关的知识,希望对你有一定的参考价值。

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.sql.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import jxl.*;
public class SimUpdate 
 private String fileName;
 public ZfzSimUpdate(String fileName)
  this.fileName = fileName;
 
 static Map tNames;
 static
  tNames = new HashMap();
 
 /**
  * 用于产生 数据库的 ID 值,组成 [年月日时分秒(100-999)] 总共 17 位数.
  * 根据不同的表名,可保证同一秒内产生的 ID 号不重复
  */  
 private static String getDtime() 
  String rid;
  Date nd = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  rid = sdf.format(nd);
  return rid;
 
 
 public String getSeqNumber(String tableName) 
  if(tableName == null || "".equals(tableName))
   tableName = "GENERY";
  Integer it;
  // noinspection SynchronizeOnNonFinalField
  synchronized(tNames)
   it = (Integer)tNames.get(tableName);
   if(it == null)
    it = new Integer(100);
    tNames.put(tableName, it);
   else
    if(it.intValue() > 998)
     it = new Integer(100);
    else
     it = new Integer(1 + it.intValue());
    tNames.put(tableName, it);
   
  
  return getDtime() + String.valueOf(it);
 
 
 private void updateDb()
  try
   Connection conn = DbPool.connectDB();
   if(conn != null)
    Statement stmt = conn.createStatement();
    /**********************************************/
    jxl.Workbook rwb = null;
    try
     //构建Workbook对象 只读Workbook对象
     //直接从本地文件创建Workbook
     //从输入流创建Workbook
     InputStream is = new FileInputStream(fileName);
     rwb = Workbook.getWorkbook(is);
     //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
     //Sheet的下标是从0开始的
     //获取第一张Sheet表
     Sheet rs = rwb.getSheet(0);
     //获取Sheet表中所包含的总列数
     int rsColumns = rs.getColumns();
     //获取Sheet表中所包含的总行数
     int rsRows = rs.getRows();
     //获取指这下单元格的对象引用
     
     String simNumber = "",termSeqId = "";
     //指定SIM卡号及序列号
     for(int i=0;i<rsRows;i++)
      for(int j=0;j<rsColumns;j++)
       Cell cell = rs.getCell(j,i);
       if(j==0)
        simNumber = cell.getContents();
         
       termSeqId = "633"+simNumber;
       
      String sql = "查询SQL";
      int isOk = stmt.executeUpdate(sql);
      if(isOk == 0 && !simNumber.equals(""))
       String termId = getSeqNumber("termInf");
       String insertSql = "自定义INSERT";
       int isAdd = stmt.executeUpdate(insertSql);
       if(isAdd > 0)
        System.out.println("成功插入第"+i+"条数据");
       
        
      
      //System.out.println("SIM卡号:"+simNumber+",序列号:"+termSeqId);
     
     
     //以下代码为写入新的EXCEL,这里不使用,所以注释
     /*
     
     //利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
     jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://Book2.xls"),rwb);
     //读取第一张工作表
     jxl.write.WritableSheet ws = wwb.getSheet(0);
   
     //获取第一个单元格对象
     jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
     //决断单元格的类型,做出相应的转化
     if (wc.getType() == CellType.LABEL) 
      Label l = (Label) wc;
      l.setString("The value has been modified.");
     
     //写入Excel对象
     wwb.write();
     wwb.close();
      */
    catch(Exception e)
     e.printStackTrace();
    
    finally
     //操作完成时,关闭对象,翻译占用的内存空间
     rwb.close();
   
    
    /*********************************************/


  catch(Exception e)
   e.printStackTrace();
  
 
 public static void main(String args[])
  DbPool dbPool = new DbPool("dbConn.cfg");//连接数据库
  SimUpdate simUpdate = new SimUpdate("zfz_sim.xls");
  simUpdate.updateDb();
  
 
  


我只用了读取XLS,写入没试,应该没问题吧,你把注释了的拿 来试一下吧

参考技术A

一般使用CSV格式。

    读取数据

    生成CSV文件

    下载CSV文件

参考技术B 第一步:如何用POI操作Excel

@Test
public void createXls() throws Exception
//声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明表
HSSFSheet sheet = wb.createSheet("第一个表");
//声明行
HSSFRow row = sheet.createRow(7);
//声明列
HSSFCell cel = row.createCell(3);
//写入数据
cel.setCellValue("你也好");
参考技术C 这个基本上不需要 java 就能做了
在 excel 里面直接建一个数据源就行了

另外,也可以用 etl 的工具,比如 kettle 之类的
参考技术D 完整举例如下:
import java.io.*;
import java.sql.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

public class ExcelFile
public static void main(String[] args)
try
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement psmnt = null;
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("Select * from student");

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Excel Sheet");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("Roll No");
rowhead.createCell((short) 1).setCellValue("Name");
rowhead.createCell((short) 2).setCellValue("Class");
rowhead.createCell((short) 3).setCellValue("Marks");
rowhead.createCell((short) 4).setCellValue("Grade");

int index = 1;
while (rs.next())

HSSFRow row = sheet.createRow((short) index);
row.createCell((short) 0).setCellValue(rs.getInt(1));
row.createCell((short) 1).setCellValue(rs.getString(2));
row.createCell((short) 2).setCellValue(rs.getString(3));
row.createCell((short) 3).setCellValue(rs.getInt(4));
row.createCell((short) 4).setCellValue(rs.getString(5));
index++;

FileOutputStream fileOut = new FileOutputStream("c:\\excelFile.xls");
wb.write(fileOut);
fileOut.close();
System.out.println("Data is saved in excel file.");
rs.close();
connection.close();
catch (Exception e)


java如何读取word中的excel表格数据

是不是把 Cell cell1=sheet.getCell(0,0); 放到一个双层循环里面,将所有的行列都得到就可以了啊 参考技术A import java.io.*;
import jxl.*;
public class ReadXLS

public static void main(String args[])

try

Workbook book = Workbook.getWorkbook(new File(“C:\\测试.xls”));
//获得第一个工作表对象
Sheet sheet=book.getSheet(0);
//得到第一列第一行的单元格
Cell cell1=sheet.getCell(0,0);
String result=cell1.getContents();
System.out.println(result);
book.close();
catch(Exception e)

System.out.println(e);


追问

··你没有看明白我意思··我意思是我现在是有一个.doc的文档,比如里面有一个柱状图,那柱状图其中是对应一个内部.xls文件 等于说我现在我操作.doc来操作其中的.xls以改变图形展示

以上是关于如何用JAVA将数据库中的数据导入到excel表格的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBA将excel的数据导入到另外个excel中

如何用Java实现将word里的表格数据写入到excel中去

请教如何用JQuery导入导出excel表格

如何用VBA将excel中的数据转化成word文档

如何用JAVA将Excel中的数据导入到sqlserver的表中

如何用Java导出数据存到excel里面