📄 excelwindowpane.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 + -