設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz

J2SE實現股票K綫(數據從excel導入)

已有 577 次閱讀2015-1-18 02:19 |個人分類:java


//------------------------------------

//excel獲取數據,需要jxl的架包

//-----------------------------------

package Q3;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;

public class GetExcel {
 public int rsColumns;
 public int rsRows;

 public void GetExcel(File file,  double[][] fl ,int[] in ) {
  jxl.Workbook rwb = null;

  try {
   // 構建Workbook對象 只讀Workbook對象
   // 直接從本地文件創建Workbook
   // 從輸入流創建Workbook
   InputStream is = new FileInputStream(file);
   rwb = Workbook.getWorkbook(is);
   // Sheet(術語:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
   // Sheet的下標是從0開始的
   // 獲取第一張Sheet表
   Sheet rs = rwb.getSheet(0);
   rsColumns = rs.getColumns();
   in[1]=rsColumns;
   // 獲取Sheet表中所包含的總行數
   rsRows = rs.getRows();
   in[0]=rsRows;
   // 獲取指這下單元格的對象引用

   for (int i = 1; i < rsRows; i++) {
    for (int j = 0; j < rsColumns; j++) {
     Cell cell = rs.getCell(j, i);
     fl[i][j] = Float.valueOf(cell.getContents()).floatValue();
     //System.out.print(cell.getContents() + " ");     //System.out.println();
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {    rwb.close();
  }

//---------------------------------

//數據封裝,需要jfreechart的架包

//--------------------------------

package Q3;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;

import jxl.Cell;
import jxl.read.biff.BiffException;

public class HighLowChartDemo extends ApplicationFrame {
 public HighLowChartDemo(String title, double[][] dl, int[] in) {
  super(title);
  JPanel jpanel = createDemoPanel(dl, in);
  jpanel.setPreferredSize(new Dimension(500, 270));
  setContentPane(jpanel);
 }

 private JPanel createDemoPanel(double[][] dl, int[] in) {
  XYDataset dataset = createXYDataset(dl, in);
  createChart(dataset);
  JFreeChart jfreechart = createChart(createXYDataset(dl, in));
  return new ChartPanel(jfreechart);
 }

 private XYDataset createXYDataset(double[][] dl, int[] in) {
  XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
  XYSeries xyserie1 = new XYSeries("Fluctuation limit");
  for (int i = 1; i < in[0]; i++) {
   xyserie1.add(dl[i][3], dl[i][0]);   xySeriesCollection.addSeries(xyserie1);
  XYSeries xyserie2 = new XYSeries("Mean");
  for (int i = 1; i < in[0]; i++) {
   xyserie2.add(dl[i][3], dl[i][1]);   xySeriesCollection.addSeries(xyserie2);
  XYSeries xyserie3 = new XYSeries("Fluctuations offline");
  for (int i = 1; i < in[0]; i++) {
   xyserie3.add(dl[i][3], dl[i][2]);   xySeriesCollection.addSeries(xyserie3);
  return xySeriesCollection;
 }

 public static JFreeChart createChart(XYDataset dataset) {
  String title = "Fluctuations in Figure";
  String x = "X";
  String y = "Y";
  JFreeChart chart = ChartFactory.createXYLineChart(title, // 標題
    x, // categoryAxisLabel (category軸,橫軸,X軸標籤)
    y, // valueAxisLabel(value軸,縱軸,Y軸的標籤)
    dataset, // dataset
    PlotOrientation.VERTICAL, true, // legend
    false, // tooltips
    false); // URLs
  // 使用CategoryPlot設置各種參數。以下設置可以省略。
  XYPlot plot = (XYPlot) chart.getPlot();   plot.setBackgroundAlpha(0.5f);   plot.setForegroundAlpha(0.5f);
  TextTitle subtitle = new TextTitle("", new Font("隸書", Font.ITALIC, 15));
  chart.addSubtitle(subtitle);
  chart.setTitle(new TextTitle(title, new Font("隸書", Font.ITALIC, 15)));
  chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000,
    Color.blue));   // String rfname = "pic.png";
  // String fileName = "c:/" + rfname;
  // try {
  // // 年的用600*400;月的用800*400,用PNG生生成的圖片比較清楚
  // ChartUtilities.saveChartAsPNG(new File(fileName), chart, 600, 400);
  // } catch (IOException exz) {
  // System.out.print("....Cant’t Create image File");   return chart;
 }

//------------------------------------

//主窗體類

//------------------------------------

package Q3;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;

import jxl.Cell;
import jxl.read.biff.BiffException;

public class MainWindow extends JFrame {

 // ------------------------  // ------------------------
 JLabel label, label2, label3;
 JTextField textField;
 JPanel panel;
 JButton open;
 double[][] dl = new double[1000][1000];
 int[] in = new int[2];

 public MainWindow() {

  label = new JLabel("導入Excel表格:");
  label3 = new JLabel("             注  意:本系統暫時只能實現形如 data2.xls 的電子表格。");
  open = new JButton("打開");
  open.setMnemonic(KeyEvent.VK_I);
  textField = new JTextField(25);
  panel = new JPanel();
  panel.setBorder(BorderFactory.createEmptyBorder(30, 50, 10, 100));   // 添加按鈕的事件處理   open.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent arg0) {

    final JFileChooser fc = new JFileChooser();

    int returnval = fc.showOpenDialog(panel);
    java.io.File file = fc.getSelectedFile();     String path = file.getPath();
    textField.setText(path);
    // 獲取Excel的數據
    GetExcel rd = new GetExcel();
    rd.GetExcel(file, dl, in);

    //調用生成圖片的方法     // 步驟1:創建XYDataset對象(準備數據)

    HighLowChartDemo highlowchartdemo = new HighLowChartDemo(
      "OHLC Demo 2",dl,in);
    highlowchartdemo.pack();
    RefineryUtilities.centerFrameOnScreen(highlowchartdemo);
    highlowchartdemo.setVisible(true);

    // System.out.println(path);
   }

  });   panel.add(label);
  panel.add(textField);
  panel.add(open);
  panel.add(label3);
  this.getContentPane().add(panel);

  // 設置窗體屬性

  setSize(650, 200);
  setTitle("資金量-匯率波動圖生成器");
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setVisible(true);

 public static void main(String[] args) {
  MainWindow main = new MainWindow();

 }
}

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄後才可以評論 登錄 | 立即註冊

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-4-29 03:12 , Processed in 0.216512 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回頂部