Excel til Java og tilbage igen
Jeg er nu angående java, og jeg har meget brug for hjælp.Jeg kan godt hente en kolonne fra Excel, men når jeg vil hente nummer 2 kolonne, går det gjalt. Mit problem lige nu er referencer mellem de forskellige while løkker.
Eks 1. I while løkke nr. 2 skal jeg bruge "Tz" fra while løkke 1, hvordan forbinder jeg de to løkker
Mit program er her:
/*
* Excelwhile.java
*
* Created on 10. december 2005, 23:01
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
package javaapplication50;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
/**
*
* @author Ellen Koch Nielsen
*/
public class Excelwhile {
/** Creates a new instance of Excelwhile */
public Excelwhile() {
}
public static void main(String[] args) {
Connection c = null;
Statement stmnt = null;
ResultSet rs = null;
double Etm = -15;
double Etst = -9.95;
double K = 4 * (Etm - Etst);
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
c = DriverManager.getConnection( "jdbc:odbc:vejrdata", "", "" );
stmnt = c.createStatement();
String query = "select Time from [sheet1$] where Time2=4571;";
rs = stmnt.executeQuery( query );
while( rs.next() )
{
// pkt. 1.0
// Udregning af formel: solindfald = m2 * Globalsolstråling * Rb
// pkt. 1.1 udregning af Rb:
// Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret
// udregning af K
// lokalkonstanten = K;
stmnt = c.createStatement();
String queryd = "select Dagnr from [sheet1$] where Time2=4571;";
rs = stmnt.executeQuery( queryd );
double Tzt;
Tzt = Double.parseDouble( rs.getString( "Time" ));
double Tz;
Tz = Tzt * 60;
// Tz = lokaltid(zonetid)
System.out.println(+Tz);
}
while( rs.next( ) ) {
double dagnr;
dagnr = Double.parseDouble( rs.getString( "Dagnr" ));
// udregning af B
// B indsættes i grader
// dagensnummer = dagnr;
double B;
B = (dagnr - 1) * (360/365);
// udregning af Tj
// Tidekvationen = Tj;
double Tj;
Tj = 229.2 * (0.000075 + 0.001868 * Math.cos(B) - 0.030277 * Math.sin(B) - 0.014615 * Math.cos(2*B) - 0.04089 * Math.sin(2*B));
// Soltid = Ts;
// udregning af Ts
double Ts;
Ts = Tz + Tj + K;
// w = timevinklen
// udregning af w
double w;
w = 15 * (Ts -12);
// deklination = d
// udregning af d
double d;
d = 23.45 * Math.sin(((284+dagnr)*260)/365);
// ø = stedet breddegrad i Tylstrup
double ø;
ø = 57.180;
// Beta = fladens hældning
double Beta;
Beta = 45;
// udregning af Rb
// Rb = Forholdet mellem bestrålingsstyrken af direkte solstråling på en skrå flade og på vandret
double Rb;
Rb = ((Math.cos((ø-Beta))*Math.cos(d)*Math.cos(w)+Math.sin((ø-Beta))*Math.sin(d))/(Math.cos(d)*Math.cos(ø)*Math.cos(w)+Math.sin(d)*Math.sin(ø)));
}
stmnt = c.createStatement();
String queryf = "select GlobalS from [sheet1$] where Time2=4571;";
rs = stmnt.executeQuery( queryf );
while( rs.next() ) {
// pkt. 1.3
// uddregning af solindfald
// Solindfald = m2 * E * Rb
// GlobalSol = data fra vejrdata
// E = GlobalSol
double E;
E = Double.parseDouble( rs.getString( "GlobalS" ));
// m2 = kvadratmeter på solfangeren
double m2;
m2 = 2.51;
// udregning af solindfald
double SolIndfald;
SolIndfald = m2 * E * Rb;
// pkt 2.0
// udregning af Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2
// Tm = middeltemperatur
// pkt. 2.1
// udregning af DeltaT
// DeltaT = (tid * SolIndfald)/(masse * cp)
double tid;
tid = 3600;
double masse;
masse = 75.3;
// cp = SpecifikVarmekapacitet
double cp;
cp = 4180;
// udregning af DeltaT
double DeltaT;
DeltaT = ((tid * SolIndfald)/(masse * cp));
// pkt 2.2
// udregning af Tm
double Tind;
Tind = 4;
double Tm;
Tm = ((tid * SolIndfald)/(masse * cp)+ Tind)/2;
// pkt. 3.0
// Solfangerens effekt = nX * E * m2 * Rb
// pkt. 3.1
// nX = virkningsgrad
double nX;
nX = 0.82;
// pkt. 3.2
// udregning af SolfangerEffekt
double SolfangerEffekt;
SolfangerEffekt = nX * E * m2 * Rb;
System.out.println("Solfangerens Effekt = " + SolfangerEffekt + "watt");
// pkt. 4.0
// udregning af TemperaturÆndring
// TemperaturÆndring = ((tid * SolfangerEffekt)/(masse * cp)) + Tind
// pkt. 4.1
double TemperaturÆndring;
TemperaturÆndring = ((tid * SolfangerEffekt)/( masse * cp)) + Tind ;
}
stmnt = c.createStatement();
String queryt = "select Dag from [sheet1$] where Time2=4571;";
rs = stmnt.executeQuery( queryt );
while( rs.next() )
{
// pkt. 5.0
// pkt. 5.1
if (TemperaturÆndring >= 45)
{
// Hvis temperaturen er over 45 grader er formlen: Seffekt = Ett:ddd
double Ettdd;
Ettdd = Double.parseDouble( rs.getString( "dag" ));
System.out.println( + SolfangerEffekt );
}
// pkt. 5.2
else if (TemperaturÆndring >=12)
{
// Denne formel gælder, hvis temperaturen er under 45 grader og over 12 grader: solfangeren effekt + el - tab = Ett:ddd
double El;
El = 1120;
double Tab1;
Tab1 = 353;
double Tab2;
Tab2 = 436;
double Tab;
Tab = Tab1 + Tab2;
double ligning;
ligning = SolfangerEffekt + El - Tab;
double Ettdd;
Ettdd = Double.parseDouble( rs.getString( "Dag" ));
System.out.println( + ligning );
}
// pkt. 5.3
else if (TemperaturÆndring <= 12)
{
}
}
}
catch( Exception e )
{
System.err.println( e );
}
try
{
stmnt.close();
c.close();
}
catch( Exception e )
{
System.err.println( e );
}
}
}
