package mhjexcel; import java.awt.Desktop; import java.awt.HeadlessException; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.apache.poi.ss.util.*; import org.apache.poi.hssf.util.*; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFDataFormat; import org.apache.poi.xssf.usermodel.XSSFPivotTable; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFTable; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import static org.apache.poi.xssf.usermodel.examples.CreatePivotTable.setCellData; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumns; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo; import org.apache.poi.xssf.usermodel.TextDirection; import org.apache.poi.xssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.RichTextString; import java.util.Map; import java.util.HashMap; import java.util.Calendar; import java.io.FileOutputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import static org.apache.poi.ss.usermodel.Font.COLOR_RED; public class Frame_Match extends javax.swing.JFrame { public static File mhjfile; public static FileOutputStream mhjfileoutput; public static FileInputStream mhjfileinput; public static XSSFWorkbook mhjworkbook; public static XSSFSheet mhjsheet; public static XSSFRow mhjrow; public static XSSFCell mhjcell; public static String cellcontents; public static String mhjpath; public static String mhjextension; public static String mhjfilename; public static String mhjfulladdress; String mhjsheetname; int rowindex;//int rowindex = Integer.parseInt(txtrow.getText()); int colindex;//int colindex = Integer.parseInt(txtcol.getText()); int firstrow; int lastrow; int firstcol; int lastcol; int sheetindex;//int sheetindex = Integer.parseInt(txtsheet.getText()); DataFormatter mhjdataformater = new DataFormatter(); Connection con; Statement stmt; public static String sql; public static ResultSet rs; int rsrow; int firsrstrow; int lastrsrow; String ticker; // Double price; Double volume; Double price_balance; Double volume_balance; Integer kind; String comment; Integer date_year; Integer date_month; Integer date_day; Integer write_year; Integer write_month; Integer write_day; String treater2; String bill_or_link; int numberofallowedemptycells; public int outcounter; private String tablename; int colcounter = 0; int lastcolcounter = 6; int emptyrowcounter = 0; final int allowedemptyrows = 3; int emptycellcounter = 0; final int allowedemptycols = 13; boolean flagemtycols = false; int numberoftickers = 6; final int firstticker = 1; final double unknownvalue = 0.123456789; final int number_of_manual_prices = 100; String manual_tickers_names[] = new String[number_of_manual_prices]; double manual_tickers_buys[] = new double[number_of_manual_prices]; double manual_tickers_sells[] = new double[number_of_manual_prices]; public Frame_Match() { initComponents(); } public void err(Exception e) { String sometext = String.valueOf(e); outcounter++; System.out.println("************Exception**********" + outcounter); System.out.println("(line: " + Thread.currentThread().getStackTrace()[0].getLineNumber() + "+" + Thread.currentThread().getStackTrace()[1].getLineNumber() + "+" + Thread.currentThread().getStackTrace()[2].getLineNumber() + "+" + Thread.currentThread().getStackTrace()[3].getLineNumber() + "+" + Thread.currentThread().getStackTrace()[4].getLineNumber() + ")"); System.out.println("\n" + sometext); System.out.println("\n" + String.valueOf(e.getMessage())); System.out.println("\n" + String.valueOf(e.getCause())); System.out.println("************End of Exception reporting*********"); Logger.getLogger(Frame_Ticker.class.getName()).log(Level.SEVERE, null, e); } public void out(String sometext) { outcounter++; sometext = "\n" + outcounter + "-(line" + Thread.currentThread().getStackTrace()[2].getLineNumber() + ")==> " + sometext; System.out.println(sometext); } public void out(Object obj) { try { String text = String.valueOf(obj); out(text); } catch (Exception e) { System.out.println("مشکل در out"); } } public static void msg(String text) { JOptionPane.showMessageDialog(null, text); } @SuppressWarnings("unchecked") // private void initComponents() { buttonGroup1 = new javax.swing.ButtonGroup(); btn_get_portfolios = new javax.swing.JButton(); btn_get_buy_prices = new javax.swing.JButton(); btn_get_sell_prices = new javax.swing.JButton(); btnoutput = new javax.swing.JButton(); btncomputation = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); txt_number_of_tickers = new javax.swing.JTextField(); chk_dont_merge = new javax.swing.JCheckBox(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); btn_get_portfolios.setText("دریافت سبد های پیشنهادی"); btn_get_portfolios.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btn_get_portfoliosActionPerformed(evt); } }); btn_get_buy_prices.setText("دریافت قیمت های اولیه"); btn_get_buy_prices.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btn_get_buy_pricesActionPerformed(evt); } }); btn_get_sell_prices.setText("دریافت قیمت های امروز"); btn_get_sell_prices.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btn_get_sell_pricesActionPerformed(evt); } }); btnoutput.setText("تولید خروجی"); btnoutput.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnoutputActionPerformed(evt); } }); btncomputation.setText("محاسبه سبد ها"); btncomputation.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btncomputationActionPerformed(evt); } }); jLabel1.setText("بیشینه نماد های درون سبد:"); txt_number_of_tickers.setEditable(false); txt_number_of_tickers.setText("6"); txt_number_of_tickers.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { txt_number_of_tickersKeyReleased(evt); } }); chk_dont_merge.setSelected(true); chk_dont_merge.setText("عدم ادغام سلول ها"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(chk_dont_merge) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(btn_get_sell_prices, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btn_get_buy_prices, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btn_get_portfolios, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btncomputation, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnoutput, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(10, 10, 10)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(txt_number_of_tickers, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel1) .addContainerGap())))) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btn_get_buy_prices, btn_get_portfolios, btn_get_sell_prices, btncomputation}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(26, 26, 26) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(txt_number_of_tickers, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btn_get_portfolios) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btn_get_buy_prices) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btn_get_sell_prices) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btncomputation) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnoutput) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(chk_dont_merge) .addContainerGap(84, Short.MAX_VALUE)) ); pack(); }// private void btn_get_portfoliosActionPerformed(java.awt.event.ActionEvent evt) { try { mhjfile = new File("C:\\Users\\Mohammad\\Desktop\\مسابقه.xlsx"); jFileChooser1 = new javax.swing.JFileChooser(); jFileChooser1.setCurrentDirectory(mhjfile); int result = jFileChooser1.showOpenDialog(this); if (result == JFileChooser.CANCEL_OPTION) { return; } mhjfile = jFileChooser1.getSelectedFile(); mhjfileinput = new FileInputStream(mhjfile); mhjworkbook = new XSSFWorkbook(mhjfileinput); mhjsheet = mhjworkbook.cloneSheet(0); XSSFDataFormat format = mhjworkbook.createDataFormat(); con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "delete FROM mosabegheh"; stmt.executeUpdate(sql); sql = "SELECT * FROM mosabegheh"; rs = stmt.executeQuery(sql); firstrow = 1; // firstcol = 1;//تغییر داده نشود // lastcol = 5; // ________________________ حقله روی شرکت کنندگان و سطر ها for (rowindex = firstrow;; rowindex++) { // mhjrow = mhjsheet.getRow(rowindex); // ___________________________ بررسی انتهای سطر ها if (mhjrow == null) { System.out.println( //"پایان سطر های ورکشیت و پایان کار جمع آوری داده ها" + "\n تعداد سطر های خوانده شده:" + rowindex ); break; } rs.moveToInsertRow(); mhjcell = mhjrow.getCell(0); cellcontents = mhjdataformater.formatCellValue(mhjcell); // _____________________بررسی نمادهای نامعلوم و قیمت های دستی if (cellcontents.equals("نمادهای دستی") || cellcontents.equals("")) { int manual_tickers_counter = 0; for (int tickernumber = firstticker; tickernumber <= numberoftickers; tickernumber++) { mhjcell = mhjrow.getCell(tickernumber); cellcontents = mhjdataformater.formatCellValue(mhjcell); String string_array[] = new String[2]; if (cellcontents != null) { string_array = cellcontents.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); } if (string_array.length != 2) { break; } String ticker = string_array[0]; double price = Double.parseDouble(string_array[1]); ticker = StandardizeTicker(ticker); if (ticker.contains("خرید")) { ticker = ticker.replaceAll("خرید", ""); // rs.updateDouble("buyprice" + String.valueOf(tickernumber), price); manual_tickers_buys[manual_tickers_counter] = price; } else if (ticker.contains("فروش")) { ticker = ticker.replaceAll("فروش", ""); // rs.updateDouble("buyprice" + String.valueOf(tickernumber), price); manual_tickers_sells[manual_tickers_counter] = price; } else { out("مشکل"); } manual_tickers_names[manual_tickers_counter] = ticker; manual_tickers_counter++; // rs.updateString("portfolioname" + String.valueOf(tickernumber), ticker); // rs.insertRow(); } continue; } // _______________ دریافت نام شرکت کنندگان _________________ rs.updateString("person", cellcontents); // _______________ دریافت نماد های منتخب شرکت کنندگان _________________ int emptycells = 0; for (int tickernumber = firstticker; tickernumber <= numberoftickers; tickernumber++) { // for (colindex = firstticker; colindex <= numberoftickers; colindex++) { mhjcell = mhjrow.getCell(tickernumber); cellcontents = mhjdataformater.formatCellValue(mhjcell);//cellcontents=mhjcell.getStringCellValue(); //mhjcell.setCellValue(cellcontents); cellcontents = cellcontents.replaceAll(",", ""); cellcontents = cellcontents.replaceAll("\\s", ""); cellcontents = cellcontents.replaceAll("-", ""); cellcontents = cellcontents.replaceAll("\\.", ""); cellcontents = cellcontents.replaceAll("ك", "ک"); cellcontents = cellcontents.replaceAll("ي", "ی"); cellcontents = cellcontents.replaceAll("آ", "ا"); cellcontents = cellcontents.replaceAll("\\d", ""); cellcontents = cellcontents.replaceAll("\\(", ""); cellcontents = cellcontents.replaceAll("\\)", ""); cellcontents = cellcontents.replaceAll("=", ""); cellcontents = cellcontents.replaceAll("\\*", ""); if (!cellcontents.equals("")) { rs.updateString("portfolioname" + String.valueOf(tickernumber - emptycells), cellcontents); } else { emptycells++; } } rs.insertRow(); } rs.close(); stmt.close(); msg("سبد های شرکت کنندگان در مسابقه دریافت شد."); } catch (HeadlessException | IOException | SQLException | NumberFormatException e) { err(e); } } private void btn_get_buy_pricesActionPerformed(java.awt.event.ActionEvent evt) { try { jFileChooser1 = new javax.swing.JFileChooser(); jFileChooser1.setCurrentDirectory(new File("C:\\Users\\Mohammad\\Desktop")); int result = jFileChooser1.showOpenDialog(this); if (result == JFileChooser.CANCEL_OPTION) { return; } mhjfile = jFileChooser1.getSelectedFile(); mhjworkbook = new XSSFWorkbook(mhjfile); mhjsheet = mhjworkbook.getSheetAt(0); XSSFDataFormat format = mhjworkbook.createDataFormat(); con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM mosabegheh"; rs = stmt.executeQuery(sql); firstrow = 3; firstcol = 1;//تغییر داده نشود lastcol = 5; int tickerscol = 0;//در اکسل int pricecol = 10;//در اکسل // int firstticker = 1; // int finalticker = 4; rs.beforeFirst(); while (rs.next()) { for (int tickernumber = firstticker; tickernumber <= numberoftickers; tickernumber++) { String ticker = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (ticker == null || ticker.equals("")) { continue; } for (rowindex = firstrow;; rowindex++) { mhjrow = mhjsheet.getRow(rowindex); if (mhjrow == null) { boolean found = false; for (int i = 0; i < manual_tickers_names.length; i++) { String name = manual_tickers_names[i]; double buy = manual_tickers_buys[i]; if (name != null && name.equals(ticker)) { rs.updateDouble("buyprice" + String.valueOf(tickernumber), buy); rs.updateRow(); found = true; break; } } if (!found) { out("قیمت خرید " + ticker + " پیدا نشد" ); } break; } mhjcell = mhjrow.getCell(tickerscol); cellcontents = mhjdataformater.formatCellValue(mhjcell); cellcontents = cellcontents.replaceAll(",", ""); cellcontents = cellcontents.replaceAll("\\s", ""); cellcontents = cellcontents.replaceAll("-", "_"); cellcontents = cellcontents.replaceAll("\\.", "_"); cellcontents = cellcontents.replaceAll("ك", "ک"); cellcontents = cellcontents.replaceAll("ي", "ی"); cellcontents = cellcontents.replaceAll("آ", "ا"); if (cellcontents.equals(ticker)) { // out(ticker + " پیدا شد در سطر شماره ی " + rowindex); mhjcell = mhjrow.getCell(pricecol); cellcontents = mhjdataformater.formatCellValue(mhjcell); Double price = Double.parseDouble(cellcontents); // out("price = " + price); rs.updateDouble("buyprice" + String.valueOf(tickernumber), price); rs.updateRow(); break; } } } } rs.close(); stmt.close(); msg("قیمت های اولیه دریافت شد"); } catch (HeadlessException | IOException | InvalidFormatException | SQLException | NumberFormatException e) { err(e); } } private void btn_get_sell_pricesActionPerformed(java.awt.event.ActionEvent evt) { try { jFileChooser1 = new javax.swing.JFileChooser(); jFileChooser1.setCurrentDirectory(new File("C:\\Users\\Mohammad\\Desktop")); int result = jFileChooser1.showOpenDialog(this); if (result == JFileChooser.CANCEL_OPTION) { return; } mhjfile = jFileChooser1.getSelectedFile(); mhjworkbook = new XSSFWorkbook(mhjfile); mhjsheet = mhjworkbook.getSheetAt(0); XSSFDataFormat format = mhjworkbook.createDataFormat(); con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM mosabegheh"; rs = stmt.executeQuery(sql); firstrow = 3; firstcol = 1;//تغییر داده نشود lastcol = 5; int tickerscol = 0;//در اکسل int pricecol = 10;//در اکسل // int firstticker = 1; // int finalticker = 4;//numberoftickers rs.beforeFirst(); while (rs.next()) { for (int tickernumber = firstticker; tickernumber <= numberoftickers; tickernumber++) { String ticker = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (ticker == null || ticker.equals("")) { continue; } for (rowindex = firstrow;; rowindex++) { mhjrow = mhjsheet.getRow(rowindex); if (mhjrow == null) { boolean found = false; for (int i = 0; i < manual_tickers_names.length; i++) { String name = manual_tickers_names[i]; double sell = manual_tickers_sells[i]; if (name != null && name.equals(ticker)) { rs.updateDouble("sellprice" + String.valueOf(tickernumber), sell); rs.updateRow(); found = true; break; } } if (!found) { out("قیمت فروش " + ticker + " پیدا نشد" ); } break; } mhjcell = mhjrow.getCell(tickerscol); cellcontents = mhjdataformater.formatCellValue(mhjcell); cellcontents = cellcontents.replaceAll(",", ""); cellcontents = cellcontents.replaceAll("\\s", ""); cellcontents = cellcontents.replaceAll("_", ""); cellcontents = cellcontents.replaceAll("-", "_"); cellcontents = cellcontents.replaceAll("\\.", "_"); cellcontents = cellcontents.replaceAll("ك", "ک"); cellcontents = cellcontents.replaceAll("ي", "ی"); cellcontents = cellcontents.replaceAll("آ", "ا"); if (cellcontents.equals(ticker)) { // out(ticker + " پیدا شد در سطر شماره ی " + rowindex); mhjcell = mhjrow.getCell(pricecol); cellcontents = mhjdataformater.formatCellValue(mhjcell); Double price = Double.parseDouble(cellcontents); // out("price = " + price); rs.updateDouble("sellprice" + String.valueOf(tickernumber), price); rs.updateRow(); break; } } } } rs.close(); stmt.close(); msg("قیمت های امروز دریافت شد."); } catch (HeadlessException | IOException | InvalidFormatException | SQLException | NumberFormatException e) { err(e); } } private void setTableRowNumbers(String tablename) { try { con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM " + tablename; //lets give it from search rs = stmt.executeQuery(sql); rs.beforeFirst(); while (rs.next()) { rs.updateInt("rownumber", rs.getRow()); rs.updateRow(); } out("در جدول " + tablename + "به میزان " + rs.getRow() + "عدد سطر شماره گذاری شد"); rs.close(); stmt.close(); } catch (Exception e) { err(e); } } private void write2ExcelOld() { try { int number_of_tickers = Integer.parseInt(txt_number_of_tickers.getText()); // con = mhjexcel.con; // stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // sql = "SELECT * FROM mosabegheh order by profit_person desc"; // rs = stmt.executeQuery(sql); // //___________________________________________ // mhjfile = new File("C:\\Users\\Mohammad\\Desktop\\نتایج.xlsx"); // mhjfileoutput = new FileOutputStream(mhjfile); // mhjworkbook = new XSSFWorkbook(); mhjsheet = mhjworkbook.createSheet("مدل 1");//mhjsheet = mhjworkbook.getSheetAt(sheetindex);//workbook exist from before //______________________styles_____________________ DecimalFormat floatformatter = new DecimalFormat("###,###,###,###,###.##"); CellStyle styleHeaders = mhjworkbook.createCellStyle(); styleHeaders.setAlignment(HorizontalAlignment.CENTER); styleHeaders.setBorderBottom(BorderStyle.THIN); styleHeaders.setBorderLeft(BorderStyle.THIN); styleHeaders.setBorderRight(BorderStyle.THIN); styleHeaders.setBorderTop(BorderStyle.THIN); styleHeaders.setBottomBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setRightBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setLeftBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setTopBorderColor(IndexedColors.WHITE.getIndex()); Font f = mhjworkbook.createFont(); f.setFontHeightInPoints((short) 12);//set font 1 to 12 point type f.setColor((short) 0xc);//COLOR_RED f.setBold(true); styleHeaders.setFont(f); f.setColor(IndexedColors.WHITE.getIndex()); styleHeaders.setFont(f); styleHeaders.setFillForegroundColor(IndexedColors.BLUE.getIndex()); styleHeaders.setFillPattern(FillPatternType.SOLID_FOREGROUND); CellStyle styleNormal = mhjworkbook.createCellStyle(); styleNormal.setAlignment(HorizontalAlignment.CENTER); styleNormal.setBorderBottom(BorderStyle.THIN); styleNormal.setBorderLeft(BorderStyle.THIN); styleNormal.setBorderRight(BorderStyle.THIN); styleNormal.setBorderTop(BorderStyle.THIN); CellStyle styleTickers = mhjworkbook.createCellStyle(); styleTickers.setAlignment(HorizontalAlignment.CENTER); styleTickers.setBorderBottom(BorderStyle.THIN); styleTickers.setBorderLeft(BorderStyle.THIN); styleTickers.setBorderRight(BorderStyle.THIN); styleTickers.setBorderTop(BorderStyle.THIN); styleTickers.setFillForegroundColor(IndexedColors.AQUA.getIndex()); styleTickers.setFillPattern(FillPatternType.SOLID_FOREGROUND); //___________________________________________ for (int i = 0; i <= number_of_tickers + 1; i++) { mhjsheet.setColumnWidth((short) i, 4000); } //___________________________________________ // mhjworkbook.setSheetName(0, "نتایج"); mhjrow = mhjsheet.createRow(0); // mhjcell = mhjrow.createCell(0); // mhjcell.setCellValue("نتایج مسابقه"); // mhjcell.setCellStyle(style1); mhjcell = mhjrow.createCell(0); mhjcell.setCellValue("شرکت کننده"); mhjcell.setCellStyle(styleHeaders); for (int tickernumber = 1; tickernumber <= number_of_tickers; tickernumber++) { mhjcell = mhjrow.createCell(tickernumber); mhjcell.setCellValue("نماد " + String.valueOf(tickernumber)); mhjcell.setCellStyle(styleHeaders); } //___________________________________________ rs.beforeFirst(); while (rs.next()) { rowindex = rs.getRow() * 2 - 1; mhjrow = mhjsheet.createRow(rowindex); Row headerRow = mhjsheet.getRow(0); headerRow.setHeight((short) 0x249);//mhjrow.setHeightInPoints(25f); // mhjcell = mhjrow.createCell(0); // mhjcell.setCellValue("سبد"); mhjcell = mhjrow.createCell(0); mhjcell.setCellValue(rs.getString("person")); mhjcell.setCellStyle(styleHeaders); for (int tickernumber = 1; tickernumber <= number_of_tickers; tickernumber++) { mhjcell = mhjrow.createCell(tickernumber); mhjcell.setCellValue(rs.getString("portfolioname" + String.valueOf(tickernumber))); mhjcell.setCellStyle(styleTickers); } //_____________ rowindex++; mhjrow = mhjsheet.createRow(rowindex); // mhjcell = mhjrow.createCell(0); // mhjcell.setCellValue("درصد"); mhjcell = mhjrow.createCell(0); mhjcell.setCellValue(Double.parseDouble(floatformatter.format(rs.getDouble("profit_person")))); mhjcell.setCellStyle(styleNormal); for (int tickernumber = 1; tickernumber <= number_of_tickers; tickernumber++) { mhjcell = mhjrow.createCell(tickernumber); mhjcell.setCellStyle(styleNormal); Double thisprofit = rs.getDouble("profit" + String.valueOf(tickernumber)); if (rs.wasNull()) { continue; } mhjcell.setCellValue(Double.parseDouble(floatformatter.format(thisprofit))); } } // XSSFPivotTable pivotTable = mhjsheet.createPivotTable(new AreaReference(new CellReference("a1"), new CellReference("c7")), new CellReference("a1")); // pivotTable.addRowLabel(0); // XSSFTable my_table = mhjsheet.createTable(); // CTTable cttable = my_table.getCTTable(); // AreaReference my_data_range = new AreaReference(new CellReference(0, 0), new CellReference(rowindex, numberoftickers + 1)); // cttable.setRef(my_data_range.formatAsString()); // cttable.setTotalsRowCount(rowindex+1); // cttable.setDisplayName("نتایج مسابقه"); // cttable.setName("match_results"); // cttable.setId(1L); // cttable.addNewTableColumns(); // CTTableColumns columns = cttable.addNewTableColumns(); // columns.setCount(5L); //define number of columns // for (int i = 0; i < 5; i++) { // CTTableColumn column = columns.addNewTableColumn(); // column.setName("Column" + i); // column.setId(i + 1); // } //_________________________________________________ // mhjworkbook.write(mhjfileoutput); // mhjworkbook.close(); // mhjfileoutput.close(); // stmt.close(); // rs.close(); // if (mhjfile.exists() || mhjfile.isDirectory()) { // Desktop.getDesktop().open(mhjfile); //// Runtime.getRuntime().exec("explorer.exe /select , " + mhjfile); // } // _____________________ تعیین پهنای ستون ها _____________________________ // for (int i = 0; i < HeaderNames.length; i++) { // mhjsheet.setColumnWidth((short) i, ColWidth[i]); // } for (int columnNumber = 0; columnNumber <= number_of_tickers; columnNumber++) { mhjsheet.autoSizeColumn(columnNumber, true); } } catch (SQLException | NumberFormatException e) { err(e); } } private void write2ExcelResults() { try { int number_of_tickers = Integer.parseInt(txt_number_of_tickers.getText()); // con = mhjexcel.con; // stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // sql = "SELECT * FROM mosabegheh order by profit_person desc"; // rs = stmt.executeQuery(sql); // //___________________________________________ // mhjfile = new File("C:\\Users\\Mohammad\\Desktop\\نتایج.xlsx"); // mhjfileoutput = new FileOutputStream(mhjfile); // mhjworkbook = new XSSFWorkbook(); mhjsheet = mhjworkbook.createSheet("نتایج");//mhjsheet = mhjworkbook.getSheetAt(sheetindex);//workbook exist from before //______________________styles_____________________ // mhjsheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true); DecimalFormat floatformatter = new DecimalFormat("###,###,###,###,###.##"); CellStyle styleHeaders = mhjworkbook.createCellStyle(); styleHeaders.setAlignment(HorizontalAlignment.CENTER); styleHeaders.setVerticalAlignment(styleHeaders.VERTICAL_CENTER); styleHeaders.setBorderBottom(BorderStyle.THIN); styleHeaders.setBorderLeft(BorderStyle.THIN); styleHeaders.setBorderRight(BorderStyle.THIN); styleHeaders.setBorderTop(BorderStyle.THIN); styleHeaders.setBottomBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setRightBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setLeftBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setTopBorderColor(IndexedColors.WHITE.getIndex()); Font f = mhjworkbook.createFont(); f.setFontHeightInPoints((short) 12);//set font 1 to 12 point type f.setColor((short) 0xc);//COLOR_RED f.setBold(true); styleHeaders.setFont(f); f.setColor(IndexedColors.WHITE.getIndex()); styleHeaders.setFont(f); styleHeaders.setFillForegroundColor(IndexedColors.BLUE.getIndex()); styleHeaders.setFillPattern(FillPatternType.SOLID_FOREGROUND); CellStyle styleHeaders2 = styleHeaders; styleHeaders2.setAlignment(HorizontalAlignment.RIGHT); CellStyle styleNormal = mhjworkbook.createCellStyle(); styleNormal.setAlignment(HorizontalAlignment.CENTER); styleNormal.setBorderBottom(BorderStyle.THIN); styleNormal.setBorderLeft(BorderStyle.THIN); styleNormal.setBorderRight(BorderStyle.THIN); styleNormal.setBorderTop(BorderStyle.THIN); CellStyle styleTickers = mhjworkbook.createCellStyle(); styleTickers.setAlignment(HorizontalAlignment.CENTER); styleHeaders.setVerticalAlignment(styleHeaders.VERTICAL_CENTER); styleTickers.setBorderBottom(BorderStyle.THIN); styleTickers.setBorderLeft(BorderStyle.THIN); styleTickers.setBorderRight(BorderStyle.THIN); styleTickers.setBorderTop(BorderStyle.THIN); styleTickers.setFillForegroundColor(IndexedColors.AQUA.getIndex()); styleTickers.setFillPattern(FillPatternType.SOLID_FOREGROUND); CellStyle styleToogle = mhjworkbook.createCellStyle(); for (int i = 0; i <= number_of_tickers + 1; i++) { mhjsheet.setColumnWidth((short) i, 6000); } //____________________هدر های جدول اکسل_______________________ // mhjworkbook.setSheetName(0, "نتایج"); mhjrow = mhjsheet.createRow(0); mhjcell = mhjrow.createCell(0); mhjcell.setCellValue("شرکت کننده"); mhjcell.setCellStyle(styleHeaders); for (int tickernumber = 1; tickernumber <= number_of_tickers; tickernumber++) { mhjcell = mhjrow.createCell(tickernumber); mhjcell.setCellValue("نماد " + String.valueOf(tickernumber)); mhjcell.setCellStyle(styleHeaders); } //___________________________________________ boolean oddcounter = true; rs.beforeFirst(); while (rs.next()) { if (oddcounter) { styleToogle = styleNormal; } else { styleToogle = styleTickers; } oddcounter = !oddcounter; rowindex = rs.getRow(); mhjrow = mhjsheet.createRow(rowindex); Row headerRow = mhjsheet.getRow(0); headerRow.setHeight((short) 0x249); mhjcell = mhjrow.createCell(0); mhjcell.setCellStyle(styleHeaders2); String Person = rs.getString("person"); Double Person_profit = rs.getDouble("profit_person"); // mhjcell.setCellValue(Person + " - " + floatformatter.format(Person_profit)); mhjcell.setCellValue("\u200E" + Person + " (" + floatformatter.format(Person_profit) + ")"); for (int tickernumber = 1; tickernumber <= number_of_tickers; tickernumber++) { mhjcell = mhjrow.createCell(tickernumber); mhjcell.setCellStyle(styleToogle); Double thisprofit = rs.getDouble("profit" + String.valueOf(tickernumber)); String tickername = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (rs.wasNull()) { continue; } // mhjcell.setCellValue(tickername + " - " + floatformatter.format(thisprofit)); mhjcell.setCellValue("\u200E" + tickername + " (" + floatformatter.format(thisprofit) + ")"); if (thisprofit == unknownvalue) { mhjcell.setCellValue("\u200E" + tickername + " (؟)"); } } } // //_________________________________________________ // mhjworkbook.write(mhjfileoutput); // mhjworkbook.close(); // mhjfileoutput.close(); // stmt.close(); // rs.close(); // if (mhjfile.exists() || mhjfile.isDirectory()) { // Desktop.getDesktop().open(mhjfile); // } // _____________________ تعیین پهنای ستون ها _____________________________ // for (int i = 0; i < HeaderNames.length; i++) { // mhjsheet.setColumnWidth((short) i, ColWidth[i]); // } for (int columnNumber = 0; columnNumber <= number_of_tickers; columnNumber++) { mhjsheet.autoSizeColumn(columnNumber, true); } } catch (Exception e) { err(e); } } private void write2ExcelPortfolios() { try { sql = "select * from mosabegheh order by rownumber"; // می خواهیم ترتیب بر اساس وارد شدن سبد ها باشد rs = stmt.executeQuery(sql); // _______________________ پارامتر ها _______________ mhjsheet = mhjworkbook.createSheet("سبد ها");//mhjsheet = mhjworkbook.getSheetAt(sheetindex);//workbook exist from before rs.last(); int participantsCount = rs.getRow(); int totalheaderrows = 1; int rowheader = 0; int rowdetails = 1; int totalsubrows = 3; int subrowticker = 0; int subrowbuy = 1; int subrowsell = 2; int totalcols = 5; int colportfolionumber = 0; int colparticipant = 1; int colrank = 2; int colprofit = 3; int colkind = 4; int numOfTickers = Integer.parseInt(txt_number_of_tickers.getText()); String HeaderNames[] = new String[totalcols + numOfTickers]; HeaderNames[0] = "شماره سبد"; HeaderNames[1] = "شرکت کننده"; HeaderNames[2] = "رتبه"; HeaderNames[3] = "سود"; HeaderNames[4] = "نوع"; for (int tickernumber = firstticker; tickernumber <= numOfTickers; tickernumber++) { HeaderNames[4 + tickernumber] = "نماد " + tickernumber; } // int ColWidth[] = new int[totalcols + numberoftickers]; // ColWidth[0] = 2500; // ColWidth[1] = 6000; // ColWidth[2] = 1000; // ColWidth[3] = 2000; // ColWidth[4] = 6000; // for (int tickernumber = firstticker; tickernumber <= numberoftickers; tickernumber++) { // ColWidth[4 + tickernumber] = 6000; // } // _____________________ تولید سطر ها و ستون ها _______________ for (int i = 0; i <= (participantsCount * totalsubrows); i++) { // participantsCount + 1 -1 // one for header row and one for begining of participatns from 1. mhjrow = mhjsheet.createRow(i); for (int j = 0; j < ((totalcols + numOfTickers)); j++) { mhjcell = mhjrow.createCell(j); } } //______________________styles_____________________ // mhjsheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true); DecimalFormat floatformatter = new DecimalFormat("###,###,###,###,###.##"); CellStyle styleHeaders = mhjworkbook.createCellStyle(); styleHeaders.setAlignment(HorizontalAlignment.CENTER); styleHeaders.setVerticalAlignment(styleHeaders.VERTICAL_CENTER); styleHeaders.setBorderBottom(BorderStyle.THIN); styleHeaders.setBorderLeft(BorderStyle.THIN); styleHeaders.setBorderRight(BorderStyle.THIN); styleHeaders.setBorderTop(BorderStyle.THIN); styleHeaders.setBottomBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setRightBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setLeftBorderColor(IndexedColors.WHITE.getIndex()); styleHeaders.setTopBorderColor(IndexedColors.WHITE.getIndex()); Font f = mhjworkbook.createFont(); f.setFontHeightInPoints((short) 12);//set font 1 to 12 point type f.setColor((short) 0xc);//COLOR_RED f.setBold(true); styleHeaders.setFont(f); f.setColor(IndexedColors.WHITE.getIndex()); styleHeaders.setFont(f); styleHeaders.setFillForegroundColor(IndexedColors.BLUE.getIndex()); styleHeaders.setFillPattern(FillPatternType.SOLID_FOREGROUND); CellStyle styleNormal = mhjworkbook.createCellStyle(); styleNormal.setAlignment(HorizontalAlignment.CENTER); styleNormal.setVerticalAlignment(styleNormal.VERTICAL_CENTER); styleNormal.setBorderBottom(BorderStyle.THIN); styleNormal.setBorderLeft(BorderStyle.THIN); styleNormal.setBorderRight(BorderStyle.THIN); styleNormal.setBorderTop(BorderStyle.THIN); CellStyle styleTickers = mhjworkbook.createCellStyle(); styleTickers.setAlignment(HorizontalAlignment.CENTER); styleTickers.setVerticalAlignment(styleTickers.VERTICAL_CENTER); styleTickers.setBorderBottom(BorderStyle.THIN); styleTickers.setBorderLeft(BorderStyle.THIN); styleTickers.setBorderRight(BorderStyle.THIN); styleTickers.setBorderTop(BorderStyle.THIN); styleTickers.setFillForegroundColor(IndexedColors.AQUA.getIndex()); styleTickers.setFillPattern(FillPatternType.SOLID_FOREGROUND); CellStyle styleToogle = mhjworkbook.createCellStyle(); //________________________هدر های اکسل ___________________ mhjrow = mhjsheet.getRow(rowheader); for (int i = 0; i < HeaderNames.length; i++) { mhjcell = mhjrow.getCell(i); mhjcell.setCellValue(HeaderNames[i]); mhjcell.setCellStyle(styleHeaders); // mhjsheet.setColumnWidth((short) i, ColWidth[i]); } Row headerRow = mhjsheet.getRow(rowheader); headerRow.setHeight((short) 0x249); //______________________سایر سطر ها_____________________ boolean oddcounter = true; rs.beforeFirst(); while (rs.next()) { if (oddcounter) { styleToogle = styleNormal; } else { styleToogle = styleTickers; } oddcounter = !oddcounter; //______________________ ستون شماره سبد _____________________ rowindex = (rs.getRow() * totalsubrows) - totalsubrows + rowdetails; mhjrow = mhjsheet.getRow(rowindex); mhjcell = mhjrow.getCell(colportfolionumber); mhjcell.setCellStyle(styleHeaders); mhjcell.setCellValue(rs.getInt("rownumber")); mhjrow = mhjsheet.getRow(rowindex + 1); mhjcell = mhjrow.getCell(colportfolionumber); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); mhjrow = mhjsheet.getRow(rowindex + 2); mhjcell = mhjrow.getCell(colportfolionumber); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); if (!chk_dont_merge.isSelected()) { mhjsheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex + 2, colportfolionumber, colportfolionumber)); } //______________________ ستون رتبه _____________________ rowindex = (rs.getRow() * totalsubrows) - totalsubrows + rowdetails; mhjrow = mhjsheet.getRow(rowindex); mhjcell = mhjrow.getCell(colrank); mhjcell.setCellStyle(styleHeaders); mhjcell.setCellValue(rs.getInt("rank")); mhjrow = mhjsheet.getRow(rowindex + 1); mhjcell = mhjrow.getCell(colrank); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); mhjrow = mhjsheet.getRow(rowindex + 2); mhjcell = mhjrow.getCell(colrank); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); if (!chk_dont_merge.isSelected()) { mhjsheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex + 2, colrank, colrank)); } //______________________ ستون سود _____________________ rowindex = (rs.getRow() * totalsubrows) - totalsubrows + rowdetails; //یکی به خاطر اینکه پایگاه داده از یک شروع میشه و این از صفر یکی هم به خاطر اینکه از بین سه تا بیاد وسط mhjrow = mhjsheet.getRow(rowindex); mhjcell = mhjrow.getCell(colprofit); mhjcell.setCellStyle(styleHeaders); Double Person_profit = rs.getDouble("profit_person"); mhjcell.setCellValue(Double.parseDouble(floatformatter.format(Person_profit))); mhjrow = mhjsheet.getRow(rowindex + 1); mhjcell = mhjrow.getCell(colprofit); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); mhjrow = mhjsheet.getRow(rowindex + 2); mhjcell = mhjrow.getCell(colprofit); mhjcell.setCellStyle(styleHeaders); // mhjcell.setCellValue("_"); if (!chk_dont_merge.isSelected()) { mhjsheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex + 2, colprofit, colprofit)); } //______________________ ستون شرکت کنندگان _____________________ rowindex = (rs.getRow() * totalsubrows) - totalsubrows + rowdetails; //یکی به خاطر اینکه پایگاه داده از یک شروع میشه و این از صفر یکی هم به خاطر اینکه از بین سه تا بیاد وسط mhjrow = mhjsheet.getRow(rowindex); mhjcell = mhjrow.getCell(colparticipant); mhjcell.setCellStyle(styleHeaders); String Person = rs.getString("person"); mhjcell.setCellValue("\u200E" + Person); mhjrow = mhjsheet.getRow(rowindex + 1); mhjcell = mhjrow.getCell(colparticipant); mhjcell.setCellStyle(styleHeaders); mhjrow = mhjsheet.getRow(rowindex + 2); mhjcell = mhjrow.getCell(colparticipant); mhjcell.setCellStyle(styleHeaders); if (!chk_dont_merge.isSelected()) { mhjsheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex + 2, colparticipant, colparticipant)); } //_____________________ ستون نوع عمل _________________________ mhjrow = mhjsheet.getRow(rowindex + subrowticker); mhjcell = mhjrow.getCell(colkind); mhjcell.setCellStyle(styleToogle); mhjcell.setCellValue("نماد"); mhjrow = mhjsheet.getRow(rowindex + subrowbuy); mhjcell = mhjrow.getCell(colkind); mhjcell.setCellStyle(styleToogle); mhjcell.setCellValue("خرید"); mhjrow = mhjsheet.getRow(rowindex + subrowsell); mhjcell = mhjrow.getCell(colkind); mhjcell.setCellStyle(styleToogle); mhjcell.setCellValue("فروش"); //_____________________ ستون نوع عمل _________________________ // _____________________ اول نماد _____________________________ mhjrow = mhjsheet.getRow(rowindex + subrowticker); for (int tickernumber = 1; tickernumber <= numOfTickers; tickernumber++) { mhjcell = mhjrow.getCell(tickernumber + colkind); mhjcell.setCellStyle(styleToogle); Double thisprofit = rs.getDouble("profit" + String.valueOf(tickernumber)); String tickername = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (rs.wasNull()) { continue; } mhjcell.setCellValue("\u200E" + tickername + " (" + floatformatter.format(thisprofit) + ")"); if (thisprofit == unknownvalue) { mhjcell.setCellValue("\u200E" + tickername + " (؟)"); } } // _____________________ دوم خرید _____________________________ mhjrow = mhjsheet.getRow(rowindex + subrowbuy); for (int tickernumber = 1; tickernumber <= numOfTickers; tickernumber++) { mhjcell = mhjrow.getCell(tickernumber + colkind); mhjcell.setCellStyle(styleToogle); Double thisprofit = rs.getDouble("profit" + String.valueOf(tickernumber)); String tickername = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (rs.wasNull()) { continue; } double buy = rs.getDouble("buyprice" + String.valueOf(tickernumber)); mhjcell.setCellValue(buy); if (buy == 0) { mhjcell.setCellValue("نامعلوم"); } } // _____________________ سوم فروش _____________________________ mhjrow = mhjsheet.getRow(rowindex + subrowsell); for (int tickernumber = 1; tickernumber <= numOfTickers; tickernumber++) { mhjcell = mhjrow.getCell(tickernumber + colkind); mhjcell.setCellStyle(styleToogle); Double thisprofit = rs.getDouble("profit" + String.valueOf(tickernumber)); String tickername = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (rs.wasNull()) { continue; } double sell = rs.getDouble("sellprice" + String.valueOf(tickernumber)); mhjcell.setCellValue(sell); if (sell == 0) { mhjcell.setCellValue("نامعلوم"); } } } // _____________________ تعیین پهنای ستون ها _____________________________ // for (int i = 0; i < HeaderNames.length; i++) { // mhjsheet.setColumnWidth((short) i, ColWidth[i]); // } for (int columnNumber = 0; columnNumber <= totalcols + numOfTickers; columnNumber++) { mhjsheet.autoSizeColumn(columnNumber, true); } } catch (SQLException | NumberFormatException e) { err(e); } } private void btnoutputActionPerformed(java.awt.event.ActionEvent evt) { try { //___________________________________________ con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM mosabegheh order by profit_person desc"; rs = stmt.executeQuery(sql); //___________________________________________ mhjfile = new File("C:\\Users\\Mohammad\\Desktop\\نتایج.xlsx"); mhjfileoutput = new FileOutputStream(mhjfile); mhjworkbook = new XSSFWorkbook(); // if (radio1.isSelected()) { // write2Excel1(); // } else if (radio2.isSelected()) { // write2Excel2(); // } else if (radio3.isSelected()) { // write2Excel3(); // } write2ExcelResults(); out("نتایج تولید شد."); write2ExcelPortfolios(); out("سبد ها تولید شد."); write2ExcelOld(); out("مدل اول تولید شد."); //_________________________________________________ mhjworkbook.write(mhjfileoutput); mhjworkbook.close(); mhjfileoutput.close(); stmt.close(); rs.close(); if (mhjfile.exists() || mhjfile.isDirectory()) { Desktop.getDesktop().open(mhjfile); } } catch (SQLException | IOException e) { err(e); } } private void btncomputationActionPerformed(java.awt.event.ActionEvent evt) { try { // ___________________ numbering rows of database (in table mosabegheh) setTableRowNumbers("mosabegheh"); // ___________________ computation of profits con = mhjexcel.con; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM mosabegheh"; rs = stmt.executeQuery(sql); double number_of_persons = 0; double max_portfolios_tickers = 0; rs.beforeFirst(); while (rs.next()) { double profitcum = 0; double portfolio_number = 0; for (int tickernumber = 1; tickernumber <= numberoftickers; tickernumber++) { String ticker = rs.getString("portfolioname" + String.valueOf(tickernumber)); if (ticker != null) { double buy = rs.getDouble("buyprice" + String.valueOf(tickernumber)); if (buy == 0) { out("مشکل در قیمت خرید " + rs.getString("person") + " profit" + String.valueOf(tickernumber)); rs.updateDouble("profit" + String.valueOf(tickernumber), unknownvalue); continue; } double sell = rs.getDouble("sellprice" + String.valueOf(tickernumber)); if (sell == 0) { out("مشکل در قیمت فروش " + rs.getString("person") + " profit" + String.valueOf(tickernumber)); rs.updateDouble("profit" + String.valueOf(tickernumber), unknownvalue); continue; } portfolio_number++; double profit = sell - buy; double profitpercents = 100 * profit / buy; rs.updateDouble("profit" + String.valueOf(tickernumber), profitpercents); profitcum += profitpercents; } } // out(profitcum); // out(portfolio_number); double avgprofit = 0; if (portfolio_number != 0) { avgprofit = (double) profitcum / portfolio_number; max_portfolios_tickers = Math.max(max_portfolios_tickers, portfolio_number); } rs.updateDouble("profit_person", (double) avgprofit); rs.updateRow(); number_of_persons++; } rs.close(); stmt.close(); // _________________ محاسبه ی رتبه stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "SELECT * FROM mosabegheh order by profit_person desc"; rs = stmt.executeQuery(sql); rs.last(); int ranks[] = new int[rs.getRow() + 1]; rs.beforeFirst(); while (rs.next()) {// ذخیره موقت در یک متغیر int rank = rs.getRow(); int portfolionumber = rs.getInt("rownumber"); ranks[portfolionumber] = rank; } sql = "SELECT * FROM mosabegheh"; rs = stmt.executeQuery(sql); rs.beforeFirst(); while (rs.next()) { // ذخیره بر روی پایگاه داده از روی متغیر rs.updateInt("rank", ranks[rs.getInt("rownumber")]); rs.updateRow(); } rs.close(); stmt.close(); msg(number_of_persons + " عدد سبد محاسبه شد."); DecimalFormat floatformatter = new DecimalFormat("###,###,###,###,###"); txt_number_of_tickers.setText(floatformatter.format(max_portfolios_tickers)); } catch (SQLException ex) { Logger.getLogger(Frame_Match.class.getName()).log(Level.SEVERE, null, ex); } } private void txt_number_of_tickersKeyReleased(java.awt.event.KeyEvent evt) { numberoftickers = Integer.parseInt(txt_number_of_tickers.getText()); } public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Frame_Match.class .getName()).log(java.util.logging.Level.SEVERE, null, ex); } // // /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new Frame_Match().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btn_get_buy_prices; private javax.swing.JButton btn_get_portfolios; private javax.swing.JButton btn_get_sell_prices; private javax.swing.JButton btncomputation; private javax.swing.JButton btnoutput; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JCheckBox chk_dont_merge; private javax.swing.JLabel jLabel1; private javax.swing.JTextField txt_number_of_tickers; // End of variables declaration private javax.swing.JFileChooser jFileChooser1; private String StandardizeTicker(String ticker) { ticker = ticker.replaceAll(",", ""); ticker = ticker.replaceAll("\\s", ""); ticker = ticker.replaceAll("-", "_"); ticker = ticker.replaceAll("\\.", "_"); ticker = ticker.replaceAll("ك", "ک"); ticker = ticker.replaceAll("ي", "ی"); return ticker; } }