الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

(مبتدئ جافا) سؤال عن الربط ما بين Jtable و ملف Xls

بدأه djug في 13 يونيو 2008 · 2 رد · 1,226 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هل يمكن ملء jtable بمحتوى ملف xls

و هل يمكن فعل العكس (أي حفظ محتوى jtable في ملف xls )

#2

حفظ JTable في ملف xls : والعكس :

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.io.*;
import javax.swing.table.*;

public class ExcelTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// An array of book titles and their associated ISBN numbers
		String[][] data = { { "Summerall", "0785214925" },
				{ "The Secret Message of Jesus", "084990000X" },
				{ "Buck Wild", "159555064X" },
				{ "25 Ways to Win with People", "0785260943" },
				{ "Aesop and the CEO ", "0785260102" },
				{ "ALL Business is Show Business ", "0785206086" },
				{ "Becoming A Person of Influence", "0785271007" },
				{ "Checklist for Life for Leaders", "0785260013" },
				{ "Duct Tape Marketing ", "078522100X" },
				{ "38 Values to Live By ", "0849916631" },
				{ "Blue Moon", "0785260641" },
				{ "Blue Like Jazz ", "9780785263708" },
				{ "Wild at Heart ", "0785262989" },
				{ "Wild Men, Wild Alaska ", "078521772X " },
				{ "The Duct Tape Bible, NCV", "0718018249" } };
		String[] headers = { "Title", "ISBN" };
		final JFrame frame = new JFrame("JTable to Excel Hack");
		DefaultTableModel model = new DefaultTableModel(data, headers);
		final JTable table = new JTable(model);
		JScrollPane scroll = new JScrollPane(table);

		// my JPopupMenu component
		final JPopupMenu popup = new JPopupMenu();

		// the save JMenuItem and its associated ActionListener
		JMenuItem save = new JMenuItem("save to file");
		save.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent action) {
				try {
					ExcelExporter exp = new ExcelExporter();
					exp.exportTable(table, new File("results.xls"));
				} catch (IOException ex) {
					System.out.println(ex.getMessage());
					ex.printStackTrace();
				}
			}
		});
		popup.add(save);

		// The open JMenuItem and its associated ActionListener
		JMenuItem open = new JMenuItem("open in Excel");
		open.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent action) {
				try {
					// Note that i'm actually saving the file first
					ExcelExporter exp = new ExcelExporter();
					File file = new File("results1.xls");
					exp.exportTable(table, file);
					ExcelOpener opn = new ExcelOpener();
					opn.openTable(file);
				} catch (IOException ex) {
					System.out.println(ex.getMessage());
					ex.printStackTrace();
				}

			}
		});
		popup.add(open);

		// the following method only works in JDK 5.0 or greater
		// table.setComponentPopupMenu(popup);

		JLabel label1 = new JLabel("Right Click to Export Data...",
				JLabel.CENTER);

		// the following code is needed for JDK 1.4
		table.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent event) {
				if (popup.isPopupTrigger(event)) {
					popup
							.show(event.getComponent(), event.getX(), event
									.getY());
				}
			}

			public void mouseReleased(MouseEvent event) {
				if (popup.isPopupTrigger(event)) {
					popup
							.show(event.getComponent(), event.getX(), event
									.getY());
				}
			}
		});

		frame.getContentPane().add("Center", scroll);
		frame.getContentPane().add("South", label1);
		frame.pack();
		frame.setVisible(true);
	}
}

class ExcelExporter {
	public ExcelExporter() {
	}

	public void exportTable(JTable table, File file) throws IOException {
		TableModel model = table.getModel();
		FileWriter out = new FileWriter(file);

		for (int i = 0; i < model.getColumnCount(); i++) {
			out.write(model.getColumnName(i) + "\t");
		}
		out.write("\n");

		for (int i = 0; i < model.getRowCount(); i++) {
			for (int j = 0; j < model.getColumnCount(); j++) {
				// I added this check for the ISBN conversion
				if (j == 0) {
					// the book Title
					out.write(model.getValueAt(i, j).toString() + "\t");
				} else {
					/*
					 * the ISBN Number Note that I added a \" to the front of
					 * the string and a \t followed by a closing \" to let Excel
					 * know that this field is to be converted as text
					 */
					out.write("\"" + model.getValueAt(i, j).toString() + "\t"
							+ "\"");
				}
			}
			out.write("\n");
		}
		out.close();
		System.out.println("write to " + file);
	}
}

class ExcelOpener {
	public ExcelOpener() {
	}

	public void openTable(File file) throws IOException {
		Runtime run = Runtime.getRuntime();
		// I make the assumption that the client has Excel and
		// the file type .XLS is associated with Excel

		// This is a simple check to find out the operating system
		String lcOSName = System.getProperty("os.name").toLowerCase();
		boolean MAC_OS_X = lcOSName.startsWith("mac os x");
		if (MAC_OS_X) {
			run.exec("open " + file);
		} else {
			run.exec("cmd.exe /c start " + file);
		}
		System.out.println(file + " opened");
	}
}

المصدر

http://rickproctor.blogspot.com/2006/08/ex...a-to-excel.html

تم تعديل هذه المشاركة بواسطة delab في 13 يونيو 2008 في 17:54

#3

بارك الله فيك "يا وليد البلاد" :)

مواضيع مشابهة