السلام عليكم ورحمة الله وبركاته
اريد عمل زر يعمل import لملفات اكسل ويقوم بتفريغها داخل جدول موجود عندي بالبرنامج
وكالعادة أجد ضالتي في المنتدى العزيز ..
واستفدت كثيييييييييرا من موضوع سابق
وقمت بكل ما اريد من استعراض للملفات وقراءة وتخزين
ولكن واجهتني مشكلة .في حال كون وجود فراغات داخل الجدول الغير موضوع له حدود
اذا كان يوجد فراغات فانه لا يعتبر وجودها وينتقل الى العنصر التالي مما يودي الى اختلاف في ترتيب البيانات ..
بسبب مشكلة القرااءة
كيف استطيع حل هذه المشكلة ..
package academicscheduler;
import academicscheduler.AvalibleCourse.CustomTableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ReadExcel1 {
public static ArrayList <Integer> CourseNo =new <Integer> ArrayList() ;
public static ArrayList <String> CourseName =new <String> ArrayList() ;
public static ArrayList <String> Istructor =new <String> ArrayList() ;
public static ArrayList <Integer> Room =new <Integer> ArrayList() ;
public static ArrayList <Integer> Hour =new <Integer> ArrayList() ;
public static ArrayList <String> Time =new <String> ArrayList() ;
public static ArrayList <String> Day =new <String> ArrayList() ;
public ReadExcel1() {
FileInputStream input = null;
Workbook workBook;
String filePath="";
try {
JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("c files", "Desktop");
fileopen.addChoosableFileFilter(filter);
int ret = fileopen.showDialog(null, "Open file");
if (ret == JFileChooser.APPROVE_OPTION) {
File file = fileopen.getSelectedFile();
filePath=file.toString();
}
input = new FileInputStream(filePath);
workBook = WorkbookFactory.create(input);
Sheet sheet = workBook.getSheetAt(0);
int jcol=-1;
int jrow=0;
for(int i=0;i<=sheet.getLastRowNum();i++){
Row row = sheet.getRow(i);
Iterator<Cell> iterator = row.cellIterator();
while (iterator.hasNext()&&jcol<6) {
// for(int j=0;j<7;j++){
Cell cell = iterator.next();
int cellType = cell.getCellType();
switch (cellType) {
case Cell.CELL_TYPE_BLANK:
{jcol=jcol+1;
ExteraCourse.jTable1.setValueAt("BLANK", jrow, jcol);
}break;
case Cell.CELL_TYPE_BOOLEAN:
{
jcol=jcol+1;
ExteraCourse.jTable1.setValueAt((cell.getBooleanCellValue()), jrow, jcol);
}break;
case Cell.CELL_TYPE_FORMULA:
{jcol=jcol+1;
ExteraCourse.jTable1.setValueAt((cell.getCellFormula()), jrow, jcol);
}break;
case Cell.CELL_TYPE_NUMERIC:
{jcol=jcol+1;
ExteraCourse.jTable1.setValueAt((int)cell.getNumericCellValue(), jrow, jcol);
}
break;
case Cell.CELL_TYPE_STRING:
{jcol=jcol+1;
ExteraCourse.jTable1.setValueAt(String.valueOf(cell.getStringCellValue()), jrow, jcol);
}break;
}
}
jrow++;
if(jrow>=10)
add();
jcol=-1;
}
for(int i=jrow;i< ExteraCourse.jTable1.getRowCount();i++)
for(int j=0;j< ExteraCourse.jTable1.getColumnCount();j++)
{ ExteraCourse.jTable1.setValueAt(null, i,j);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (InvalidFormatException ex) {
ex.printStackTrace();
} finally {
try {
input.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void add(){
DefaultTableModel jdtm= (DefaultTableModel) ExteraCourse.jTable1.getModel();
String S1=""; String S2=""; String S3=""; String S4="";
Object obj[] = {S1,S2,S3,S4};
jdtm.addRow(obj);
Object o = new Object();
TableColumn tcol = ExteraCourse.jTable1.getColumnModel().getColumn(0);
tcol.setCellRenderer(new CustomTableCellRenderer());
}
public class CustomTableCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
setHorizontalAlignment(SwingConstants.CENTER);
if (isSelected) {
if (row % 2 == 1) {
cell.setBackground(new Color(80,147,198));
}
else {
cell.setBackground(Color.white);
}
}
else {
if (row % 2 == 1) {
cell.setBackground(new Color(80,147,198));
}
else {
cell.setBackground(Color.white);
}
}
return cell;
}
}
}