2014-07-24 3 views
2

결과 집합을 Excel로 내보내기하는이 프로젝트에 도움이되었습니다. 이전 솔루션은 내 질문에 대답하지 않았지만 도움이되었습니다. 지금까지 내 코드가 있습니다. 데이터베이스에 행만 표시합니다. 내 코드는 매우 어려운 아Apache Poi를 사용하여 Java 데이터베이스에서 Excel로 결과 집합 내보내기

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.*; 


public class Plexada2 { 


     public static void main(String[] args) { 
     try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection conn = DriverManager.getConnection("jdbc:odbc:Storeway","root", ""); 
     Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     ResultSet rs = st.executeQuery("Select * from Storeway.order"); 

     HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet sheet = workbook.createSheet("lawix10"); 


     Row row = sheet.createRow(0); 
     int x=0; 
     while (rs.next()){ 
     String crate_id= rs.getString(2); 
     String content=rs.getString(3); 
     String Order_type= rs.getString(4); 
     java.sql.Date date= rs.getDate(5); 
     String datex= String.valueOf(date); 

     row.createCell(0).setCellValue(crate_id); 
     row.createCell(1).setCellValue(content); 
     row.createCell(2).setCellValue(Order_type); 
     row.createCell(3).setCellValue(datex); 

       } 
     x+=1; 



     String yemi = "C:\\Users\\lawix10\\Desktop\\testlno9.xls"; 
     FileOutputStream fileOut; 
     try { 
      fileOut = new FileOutputStream(yemi); 
      workbook.write(fileOut); 
      fileOut.close(); 
       } 
+0

ResultSet 객체를 반복 할 때마다 새 행을 어디에서 작성합니까? 심지어 더 나은 당신은 행 0에서 헤더를 만들고 while 루프에서 행을 만들기 시작합니다. x를 사용하여 반복합니다. –

+0

Excel 프로그램에서 Java 프로그램을 사용하여 그 위치에 액세스 할 수 있습니까? –

+0

엑셀 시트에서 얻은 것을 나눌 수 있습니까? 또한 가능한 경우 위 코드를 올바르게 포맷하십시오. –

답변

9

이 코드는 당신이 그것을 게시하기 전에 포맷을 시도하고 쿼리가이 같은 시도에 대해서는 검사합니다.

try { 
    Class.forName("driverName"); 
    Connection con = DriverManager.getConnection("url", "user", "pass"); 
    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery("Select * from tablename"); 
    HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet sheet = workbook.createSheet("lawix10"); 
    HSSFRow rowhead = sheet.createRow((short) 0); 
    rowhead.createCell((short) 0).setCellValue("CellHeadName1"); 
    rowhead.createCell((short) 1).setCellValue("CellHeadName2"); 
    rowhead.createCell((short) 2).setCellValue("CellHeadName3"); 
    int i = 1; 
    while (rs.next()){ 
     HSSFRow row = sheet.createRow((short) i); 
     row.createCell((short) 0).setCellValue(Integer.toString(rs.getInt("column1"))); 
     row.createCell((short) 1).setCellValue(rs.getString("column2")); 
     row.createCell((short) 2).setCellValue(rs.getString("column3")); 
     i++; 
    } 
    String yemi = "g:/test.xls"; 
    FileOutputStream fileOut = new FileOutputStream(yemi); 
    workbook.write(fileOut); 
    fileOut.close(); 
    } catch (ClassNotFoundException e1) { 
     e1.printStackTrace(); 
    } catch (SQLException e1) { 
     e1.printStackTrace(); 
    } catch (FileNotFoundException e1) { 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 
+0

많은 분들께 고마워요. 처음으로 질문을 올리므로 서식에 익숙하지 않습니다. 감사합니다 – user3027085

+0

그게 효과가 있었나요? – SparkOn

+0

약 테스트하고 있습니다. 감사합니다. 감사합니다. 감사합니다. – user3027085

관련 문제