استيراد المحتويات من مصنف 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
المساهمات : 398
النقاط : 200591
التقيم : 15
الدولة : مصر
الجنس : ذكر

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

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

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

أحسنت 

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

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

https://egy-tech.forumegypt.net

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

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

ََ

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


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