JAVA 实现读写excel文件
大家好,我是梦辛工作室的灵,最近在一个批量录入数据的 工具,顺便做了一下封装,可以更好的使用:
使用方法如下:
import java.io.File;
import java.util.List;
public class Test {
public static void main(String[] args) {
printExcel("C:\\Users\\Administrator\\Desktop\\test.xls");
}
public static void printExcel(String path) {
if (!path.endsWith(".xls")) {
System.out.println("仅支持xls格式的文件");
return;
}
try {
List<TableRow> datalist = ExcelUtil.readExcelRow(new File(path));
System.out.println("excel中所有sheet表的数据如下:");
System.out.println("---------------------");
for (TableRow tableRow : datalist) {
// getParamstr() 为第一行 为 key 其他行为 value的形式的拼接字符串
// 如第一行为 学号 姓名 分数 第二行 为 2003 小红 80
// 那个从第二行起getParamstr() 为 学号=2003&姓名=小红&分数=80 , 第一行getParamstr() 为空字符串
// ;
System.out.println(tableRow.getParamstr());
}
System.out.println("---------------------");
int i = 1;
for (TableRow tableRow : datalist) {
System.out.println("第" + i + "行数据如下:");
// getColumnValue() 为 List<String> 该行的所有数据
StringBuffer stringBuffer = new StringBuffer();
for (String str : tableRow.getColumnValue()) {
stringBuffer.append(str + ",");
}
System.out.println(stringBuffer.toString());
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果如下:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelUtil {
public static void writeExcel(File file, List<TableRow> tableRows) throws Exception {
if (file.exists()) {
file.delete();
}
file.createNewFile();
// 创建工作簿
WritableWorkbook workbook = Workbook.createWorkbook(file);
// 创建sheet
WritableSheet sheet = workbook.createSheet("sheet1", 0);
Label label = null;
// 第一行设置列名
for (int i = 0; i < tableRows.size(); i++) {
List<String> columnvalue = tableRows.get(i).getColumnValue();
for (int j = 0; j < columnvalue.size(); j++) {
label = new Label(j, i, columnvalue.get(j));
sheet.addCell(label);
}
}
// 写入数据
workbook.write();
workbook.close();
}
// 去读Excel的方法readExcel,该方法的入口参数为一个File对象
public static List<String> readExcel(File f) throws Exception {
if (!f.exists()) {
throw new IllegalAccessError("文件不存在");
}
List<String> result = new ArrayList<>();
Workbook book = Workbook.getWorkbook(f);//
Sheet[] sheets = book.getSheets(); // 获得第一个工作表对象
for (Sheet sheet : sheets) {
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i); // 获得单元格
if (cell.getContents().equals("")) {
continue;
}
result.add(cell.getContents());
}
}
}
return result;
}
// 去读Excel的方法readExcel,一行一行读取数据
public static List<TableRow> readExcelRow(File f) throws Exception {
if (!f.exists()) {
throw new IllegalAccessError("文件不存在");
}
List<TableRow> result = new ArrayList<>();
Workbook book = Workbook.getWorkbook(f);//
// Sheet sheet = book.getSheet(0); // 获得第一个工作表对象
Sheet[] sheets = book.getSheets(); // 获得第一个工作表对象
for (Sheet sheet : sheets) {
String[] header = new String[sheet.getColumns()];
for (int i = 0; i < sheet.getRows(); i++) {
TableRow tableRow = new TableRow();
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i); // 获得单元格
if (cell.getContents().equals("")) {
continue;
}
if (i == 0) {
header[j] = cell.getContents();
} else {
tableRow.append(header[j] + "=" + cell.getContents() + "&");
}
tableRow.getColumnValue().add(cell.getContents());
}
result.add(tableRow);
}
}
return result;
}
public static List<TableRow> readExcelRowFilePath(File f) throws Exception {
if (!f.exists()) {
throw new IllegalAccessError("文件不存在");
}
List<TableRow> result = new ArrayList<>();
Workbook book = Workbook.getWorkbook(f);//
Sheet sheet = book.getSheet(0);
for (int i = 0; i < sheet.getRows(); i++) {
TableRow tableRow = new TableRow();
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
if (cell.getContents().equals("")) {
continue;
}
tableRow.append(cell.getContents() + "/");
tableRow.getColumnValue().add(cell.getContents());
}
result.add(tableRow);
}
return result;
}
}
下载地址:https://download.csdn.net/download/weixin_41392105/12657999