منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

استيراد المحتويات من مصنف Excel إلى المكون JTable

اذهب الى الأسفل

استيراد المحتويات من مصنف Excel إلى المكون JTable  Empty استيراد المحتويات من مصنف Excel إلى المكون JTable

مُساهمة من طرف NEXT الجمعة ديسمبر 13, 2019 8:12 pm

توضح تلك المقالة كيفية استيراد محتويات excel إلى JTable.

يوضح الكود التالى كيفية اتاحة المستخدمين تحديد مصنف excel من خلال (JFileChooser). بمجرد استيراد ملف excel المحدد ، يتم سرد جميع أوراق العمل المتاحة للمستخدم (JOptionPane). الآن استنادًا إلى محتويات ورقة excel المختارة ، يتم تحميل المحتويات المقابلة في تنسيق جدولي (JTable)

للملاحظه،

يقبل تنسيق .xls فقط
يمكن استيراد ورقة إكسل واحدة فقط في وقت واحد
يعتبر الصف الأول من ورقة excel بمثابة رأس لـ JTable
يستخدم الكائن HSSF للوصول إلى مصنف Excel من خلال Java


الكود:

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class excelTojTable extends JFrame {
   static JTable table;
   static JScrollPane scroll;
   // header is Vector contains table Column
   static Vector headers = new Vector();
    static Vector data = new Vector();
   // Model is used to construct
   DefaultTableModel model = null;
   // data is Vector contains Data from Excel File static Vector data = new Vector();
   static JButton jbClick;
   static JFileChooser jChooser;
   static int tableWidth = 0;
   // set the tableWidth
   static int tableHeight = 0;
   // set the tableHeight
   public excelTojTable()
   {
      super("Import Excel To JTable");
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JPanel buttonPanel = new JPanel();
      buttonPanel.setBackground(Color.white);
      jChooser = new JFileChooser();
      jbClick = new JButton("Select Excel File");
      buttonPanel.add(jbClick, BorderLayout.CENTER);
      
      // Show Button Click Event
      jbClick.addActionListener(new ActionListener()
      {
         @Override public void actionPerformed(ActionEvent arg0)
         {
         jChooser.showOpenDialog(null);
         jChooser.setDialogTitle("Select only Excel workbooks");
         File file = jChooser.getSelectedFile();         
         
         if(file==null)
            {
               JOptionPane.showMessageDialog(null, "Please select any Excel file.", "Help",JOptionPane.INFORMATION_MESSAGE);
               return;
            }
         else if(!file.getName().endsWith("xls"))
            {
            JOptionPane.showMessageDialog(null, "Please select only Excel file.", "Error",JOptionPane.ERROR_MESSAGE);
            }
         else
            {
               fillData(file);
               model = new DefaultTableModel(data, headers);
               tableWidth = model.getColumnCount() * 150;
               tableHeight = model.getRowCount() * 25;
               table.setPreferredSize(new Dimension( tableWidth, tableHeight)); table.setModel(model);
            }
         }
      }
      );
      table = new JTable();
      table.setAutoCreateRowSorter(true);
      model = new DefaultTableModel(data, headers);
      table.setModel(model);
      table.setBackground(Color.pink);
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      table.setEnabled(false);
      table.setRowHeight(25);
      table.setRowMargin(4);
      tableWidth = model.getColumnCount() * 150;
      tableHeight = model.getRowCount() * 25;
      table.setPreferredSize(new Dimension( tableWidth, tableHeight));
      scroll = new JScrollPane(table); scroll.setBackground(Color.pink);
      scroll.setPreferredSize(new Dimension(300, 300));
      scroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      scroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
      getContentPane().add(buttonPanel, BorderLayout.NORTH);
      getContentPane().add(scroll, BorderLayout.CENTER);
      setSize(600, 600);
      setResizable(true); setVisible(true);
   }
   /** * Fill JTable with Excel file data. * * @param file * file :contains xls file to display in jTable */
   void fillData(File file)
   {
      int index=-1;
      HSSFWorkbook workbook = null;
      try {
           try {
                FileInputStream inputStream = new FileInputStream (file);
                workbook = new HSSFWorkbook(inputStream);
              }
           catch (IOException ex)
              {
                 Logger.getLogger(excelTojTable.class. getName()).log(Level.SEVERE, null, ex);
              }
            
           String[] strs=new String[workbook.getNumberOfSheets()];
           //get all sheet names from selected workbook
           for (int i = 0; i < strs.length; i++)
           {               
                strs[i]= workbook.getSheetName(i);
                   
            }  
          
           JFrame frame = new JFrame("Input Dialog");
           String selectedsheet = (String) JOptionPane.showInputDialog(frame, "Which worksheet you want to import ?", "Select Worksheet",
               JOptionPane.QUESTION_MESSAGE,
               null,
               strs,
               strs[0]);
          
          
           if (selectedsheet!=null)
           {
              for (int i = 0; i < strs.length; i++)
              {               
                 if (workbook.getSheetName(i).equalsIgnoreCase(selectedsheet))
                    index=i;
                   
              }  
          
              HSSFSheet sheet = workbook.getSheetAt(index);
              HSSFRow row=sheet.getRow(0);
              headers.clear();
              for (int i = 0; i < row.getLastCellNum(); i++)
                 {
                    HSSFCell cell1 = row.getCell(i);
                    headers.add(cell1.toString());
                 }
              data.clear();
              for (int j = 1; j < sheet.getLastRowNum() + 1; j++)
              {
                 Vector d = new Vector();
                 row=sheet.getRow(j);
                 int noofrows=row.getLastCellNum();
                 for (int i = 0; i < noofrows; i++)
                 {                   
                    //To handle empty excel cells
                    HSSFCell cell=row.getCell(i, org.apache.poi.ss.usermodel.Row.CREATE_NULL_AS_BLANK );                   
                    System.out.println (cell.getCellType());                   
                    d.add(cell.toString());
                                 
                 }
                 d.add("\n");
                 data.add(d);
              }
           }
           else
           {             
              return;
           }
      }
      catch (Exception e)
      {
      e.printStackTrace();
      }
   }
   public static void main(String[] args) {
      new excelTojTable();
      }

}





الاخراج :

1_تحديد ملف الاكسل

استيراد المحتويات من مصنف Excel إلى المكون JTable  SelectExcelfile

2_ يتم تحميل كافة المصنفات أو sheet الاكسل و اختيار المصنف المطلوب

استيراد المحتويات من مصنف Excel إلى المكون JTable  SelectExcelSheet

3_يتم تحميل بيانات ال sheet الى جدول البيانات

استيراد المحتويات من مصنف Excel إلى المكون JTable  ImportedContent

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
استيراد المحتويات من مصنف Excel إلى المكون JTable  Do.php?imgf=154090993464951
NEXT
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استيراد المحتويات من مصنف Excel إلى المكون JTable  Empty رد: استيراد المحتويات من مصنف Excel إلى المكون JTable

مُساهمة من طرف أحمد مناع الأربعاء يناير 01, 2020 3:35 pm

أحسنت 

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1107
النقاط : 202033
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استيراد المحتويات من مصنف Excel إلى المكون JTable  Empty رد: استيراد المحتويات من مصنف Excel إلى المكون JTable

مُساهمة من طرف mergac الخميس مارس 05, 2020 10:28 am

عمل جيد بارك الله فيك 
انا ابحث عن كيفية استيراد ملف excel من طرف قاعدة بيانات بإستعمال الجافا طبعا 
وشكرا مسبقا
mergac
mergac
.
.

تاريخ التسجيل : 03/11/2019
المساهمات : 7
النقاط : 8
التقيم : 1
الدولة : الجزائر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استيراد المحتويات من مصنف Excel إلى المكون JTable  Empty رد: استيراد المحتويات من مصنف Excel إلى المكون JTable

مُساهمة من طرف أحمد مناع الخميس مارس 05, 2020 5:27 pm

عمل جيد بارك الله فيك 
انا ابحث عن كيفية استيراد ملف excel من طرف قاعدة بيانات بإستعمال الجافا طبعا 
وشكرا مسبقا

 أهلا بيكم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ...اليكى الشفرة التالية :

الكود:

import java.io.*;
import java.sql.*;
import java.util.*;
 
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
 
/**
 * Sample Java program that imports data from an Excel file to MySQL database.
 *

 *
 */
public class Excel2DatabaseTest {
 
    public static void main(String[] args) {
        String jdbcURL = "jdbc:mysql://localhost:3306/sales";
        String username = "user";
        String password = "password";
 
        String excelFilePath = "Students.xlsx";
 
        int batchSize = 20;
 
        Connection connection = null;
 
        try {
            long start = System.currentTimeMillis();
            
            FileInputStream inputStream = new FileInputStream(excelFilePath);
 
            Workbook workbook = new XSSFWorkbook(inputStream);
 
            Sheet firstSheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = firstSheet.iterator();
 
            connection = DriverManager.getConnection(jdbcURL, username, password);
            connection.setAutoCommit(false);
  
            String sql = "INSERT INTO students (name, enrolled, progress) VALUES (?, ?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);    
            
            int count = 0;
            
            rowIterator.next(); // skip the header row
            
            while (rowIterator.hasNext()) {
                Row nextRow = rowIterator.next();
                Iterator<Cell> cellIterator = nextRow.cellIterator();
 
                while (cellIterator.hasNext()) {
                    Cell nextCell = cellIterator.next();
 
                    int columnIndex = nextCell.getColumnIndex();
 
                    switch (columnIndex) {
                    case 0:
                        String name = nextCell.getStringCellValue();
                        statement.setString(1, name);
                        break;
                    case 1:
                        Date enrollDate = nextCell.getDateCellValue();
                        statement.setTimestamp(2, new Timestamp(enrollDate.getTime()));
                    case 2:
                        int progress = (int) nextCell.getNumericCellValue();
                        statement.setInt(3, progress);
                    }
 
                }
                
                statement.addBatch();
                
                if (count % batchSize == 0) {
                    statement.executeBatch();
                }              
 
            }
 
            workbook.close();
            
            // execute the remaining queries
            statement.executeBatch();
  
            connection.commit();
            connection.close();
            
            long end = System.currentTimeMillis();
            System.out.printf("Import done in %d ms\n", (end - start));
            
        } catch (IOException ex1) {
            System.out.println("Error reading file");
            ex1.printStackTrace();
        } catch (SQLException ex2) {
            System.out.println("Database error");
            ex2.printStackTrace();
        }
 
    }
}

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1107
النقاط : 202033
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى