CSV相关类
/** * The table model for csv file content * * @author Peter * */public class CSVTableModel extends AbstractTableModel {private static final long serialVersionUID = 1L;private String[] columnNames;private List<Map<String, String>> tableDataList;public CSVTableModel(int columnCount) {if (columnCount < 1)throw new IllegalArgumentException("columnCount is less than 1.");columnNames = createColumnNames(columnCount);tableDataList = createTableDataList(new String[0][0], columnNames);}public CSVTableModel(String[][] tableData) {if (tableData == null)throw new IllegalArgumentException("columnNames or tableData is null.");int columnCount = -1;for (String[] rowData : tableData) {if (rowData != null && rowData.length > columnCount)columnCount = rowData.length;}if (columnCount < 1)throw new IllegalArgumentException("tableData's column number is less than 1.");columnNames = createColumnNames(columnCount);tableDataList = createTableDataList(tableData, columnNames);}public CSVTableModel(String[] columnNames) {this(columnNames, new String[0][0]);}public CSVTableModel(String[] columnNames, String[][] tableData) {if (columnNames == null || tableData == null)throw new IllegalArgumentException("columnNames or tableData is null.");this.columnNames = Arrays.copyOf(columnNames, columnNames.length);this.tableDataList = createTableDataList(tableData, columnNames);}private static String[] createColumnNames(int columnCount) {String[] columnNames = new String[columnCount];for (int columnIndex = 0; columnIndex < columnNames.length; columnIndex++) {String columnName = "";if (columnIndex >= 26) {columnName = columnNames[columnIndex - 26];}columnName += ((char) (columnIndex % 26) + 'A');}return columnNames;}private static List<Map<String, String>> createTableDataList(String[][] tableData, String[] columnNames) {List<Map<String, String>> tableDataList = new ArrayList<Map<String, String>>();for (String[] rowData : tableData) {tableDataList.add(toRowMap(rowData, columnNames));}return tableDataList;}private static Map<String, String> toRowMap(String[] rowData,String[] columnNames) {if (rowData == null)rowData = new String[0];Map<String, String> rowMap = new HashMap<String, String>();for (int i = 0; i < columnNames.length; i++) {if (i < rowData.length)rowMap.put(columnNames[i], rowData[i]);elserowMap.put(columnNames[i], "");}return rowMap;}@Overridepublic int getRowCount() {return tableDataList.size();}@Overridepublic int getColumnCount() {return columnNames.length;}@Overridepublic String getColumnName(int column) {return columnNames[column];}@Overridepublic Object getValueAt(int rowIndex, int columnIndex) {String columnName = getColumnName(columnIndex);return getCellAt(rowIndex, columnName);}public Object getCellAt(int rowIndex, String columnName) {Map<String, String> row = getRow(rowIndex);return row.get(columnName);}public Map<String, String> getRow(int rowIndex) {return tableDataList.get(rowIndex);}}