⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 excelwindowpane.java

📁 基于Ajax的WebOS————PhoneShow案例
💻 JAVA
字号:
package com.cownew.phoneshow.office;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import nextapp.echo2.app.SplitPane;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.filetransfer.UploadEvent;
import nextapp.echo2.app.table.DefaultTableModel;

import org.apache.commons.io.IOUtils;

import com.cownew.phoneshow.MainApp;
import com.cownew.phoneshow.framework.ctrl.OpenFileDialog;
import com.cownew.phoneshow.framework.ctrl.UploadListenerAdapter;

import echopointng.ExtentEx;
import echopointng.Menu;
import echopointng.MenuBar;
import echopointng.MenuItem;
import echopointng.TabbedPane;
import echopointng.TableEx;
import echopointng.tabbedpane.DefaultTabModel;

public class ExcelWindowPane extends WindowPane
{
	private TabbedPane wsPane;

	public ExcelWindowPane()
	{
		super();
		setTitle("Excel");
		SplitPane splitPane = new SplitPane(
				SplitPane.ORIENTATION_VERTICAL_TOP_BOTTOM);
		splitPane.setSeparatorPosition(new ExtentEx("30px"));

		add(splitPane);

		MenuBar menuBar = new MenuBar();
		menuBar.setMenuAlwaysOnTop(true);
		splitPane.add(menuBar);

		Menu menuFile = new Menu("文件");
		menuFile.setMenuAlwaysOnTop(true);
		menuBar.add(menuFile);

		MenuItem miOpen = new MenuItem("打开");
		miOpen.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e)
			{
				openFile();
			}

		});
		menuFile.add(miOpen);

		MenuItem miExit = new MenuItem("退出");
		miExit.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e)
			{
				userClose();
			}

		});

		menuFile.add(miExit);

		wsPane = new TabbedPane();

		splitPane.add(wsPane);
	}

	//弹出文件打开对话框
	private void openFile()
	{
		OpenFileDialog openDialog = new OpenFileDialog(
				new UploadListenerAdapter() {

					public void fileUpload(UploadEvent e)
					{
						openUpload(e);
					}

				});
		MainApp.addComponent(openDialog);
	}

	//打开上传的文件
	private void openUpload(UploadEvent e)
	{
		InputStream is = e.getInputStream();
		BufferedReader br = null;
		DefaultTabModel tabModel = new DefaultTabModel();
		try
		{
			wsPane.setModel(tabModel);
			//得到多个工作表
			Workbook wb = Workbook.getWorkbook(is);
			for (int i = 0, n = wb.getNumberOfSheets(); i < n; i++)
			{
				//依次添加各个页签
				Sheet sheet = wb.getSheet(i);
				addSheet(sheet, tabModel);
			}
		} catch (BiffException be)
		{
			MainApp.showInfo("文件打开错误");
			return;
		} catch (IOException ioe)
		{
			MainApp.showInfo("文件打开错误");
			return;
		} finally
		{
			IOUtils.closeQuietly(is);
			IOUtils.closeQuietly(br);
		}
	}

	//将excel页sheet添加到页签中
	private void addSheet(Sheet sheet, DefaultTabModel tabModel)
	{
		//创建一个表格模型
		DefaultTableModel tableModel = new DefaultTableModel();
		int colCount = sheet.getColumns();
		tableModel.setColumnCount(colCount);

		//添加各个数据行
		for (int i = 0, n = sheet.getRows(); i < n; i++)
		{
			Cell[] row = sheet.getRow(i);
			addRow(row, tableModel, colCount);
		}
		//添加表格到页签模型中
		TableEx table = new TableEx(tableModel);
		tabModel.addTab(sheet.getName(), table);
	}

	//添加各个行
	private void addRow(Cell[] row, DefaultTableModel tableModel, int colCount)
	{
		List<String> rowData = new ArrayList<String>();
		for (int i = 0, n = row.length; i < n; i++)
		{
			rowData.add(row[i].getContents());
		}
		// 因为如果格不满tableModel中定义的列数(colCount),则运行会报错,所以凑空格补齐
		for (int i = row.length; i < colCount; i++)
		{
			rowData.add("");
		}
		tableModel.addRow(rowData.toArray());
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -