実行のインポートとエクスポート

実行エクスポート

私たちは、ApachePOIツール、ダウンロードアドレスを使用しています
プロセスは非常にシンプルで、主にAPIを使用しており、コードは次のとおりです。

ExeclUtil.java:

import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Execl工具类
 * @author Cherry
 */
public class ExeclUtil {
	private static final int MAXSIZE = 5000;

	/**
	 * 传入数据列表进行Execl导出
	 * @throws Exception 
	 */
	public static <T> void listToExecl(List<T> data, OutputStream out, Map<String, String> fields)
			throws Exception {
		if (data == null || data.size() == 0) {
			throw new Exception("传入的数据源中无数据");
		}

		HSSFWorkbook workbook = new HSSFWorkbook();

		//1.计算一共有多少个Sheet
		int sheetNum = data.size() / MAXSIZE;

		if (data.size() % MAXSIZE != 0) {
			sheetNum += 1;
		}

		String[] fieldNames = new String[fields.size()];
		String[] values = new String[fields.size()];
		int count = 0;

		for (Entry<String, String> entry : fields.entrySet()) {
			String fieldName = entry.getKey();
			String value = entry.getValue();
			fieldNames[count] = fieldName;
			values[count] = value;
			count++;
		}

		//填充数据
		for (int i = 0; i < sheetNum; i++) {
			int rowCount = 0;
			HSSFSheet sheet = workbook.createSheet();
			int startIndex = i * MAXSIZE;
			int endIndex = (i + 1) * MAXSIZE - 1 > data.size() ? data.size()
					: (i + 1) * MAXSIZE - 1;
			HSSFRow row = sheet.createRow(rowCount);
			//标题行
			for (int j = 0; j < values.length; ++j) {
				HSSFCell cell = row.createCell(j);
				cell.setCellValue(values[j]);
			}
			rowCount++;
			for (int index = startIndex; index < endIndex; index++) {
				T item = data.get(index);//获取数据的实体对象
				row = sheet.createRow(rowCount);
				//通过反射取值
				for (int j = 0; j < values.length; ++j) {
					Field field = item.getClass().getDeclaredField(fieldNames[j]);
					field.setAccessible(true);
					Object object = field.get(item);
					String value = object == null ? "" : object.toString();
					HSSFCell cell = row.createCell(j);
					cell.setCellValue(value);
				}
				rowCount++;
			}
		}
		workbook.write(out);
	}

}

Test.java:

package com.cherry.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Test {
	public static void main(String[] args) throws Exception {
		/*//1创建工作簿(WorkBook)
		HSSFWorkbook workBook = new HSSFWorkbook();
		//HSSFCellStyle cellStyle = workBook.createCellStyle();
		//cellStyle.set
		//2.创建Sheet
		HSSFSheet sheet = workBook.createSheet("班级信息");
		//3.创建行
		HSSFRow row = sheet.createRow(0);
		//4.创建列
		HSSFCell cell = row.createCell(0);
		//5.填写数据
		cell.setCellValue("bmy");
		//6.execl传递
		OutputStream out = new FileOutputStream("E:/test.xls");
		//通过workbook的write方法实现execl的输出
		workBook.write(out);
		out.close();*/

		//================================ 导出 =======================================
		List<Student> data = new ArrayList<>();
		Student stu0 = new Student();
		stu0.setAge(18);
		stu0.setName("DJJ");
		stu0.setNum("20177507");
		stu0.setSex("女");
		data.add(stu0);
		
		Student stu1 = new Student();
		stu1.setAge(18);
		stu1.setName("DJJ");
		stu1.setNum("20177507");
		stu1.setSex("女");
		data.add(stu1);
		
		Student stu2 = new Student();
		stu2.setAge(18);
		stu2.setName("DJJ");
		stu2.setNum("20177507");
		stu2.setSex("女");
		data.add(stu2);
		
		Student stu3 = new Student();
		stu3.setAge(18);
		stu3.setName("DJJ");
		stu3.setNum("20177507");
		stu3.setSex("女");
		data.add(stu3);
		
		Student stu4 = new Student();
		stu4.setAge(18);
		stu4.setName("DJJ");
		stu4.setNum("20177507");
		stu4.setSex("女");
		data.add(stu4);
		
		Student stu5 = new Student();
		stu5.setAge(18);
		stu5.setName("DJJ");
		stu5.setNum("20177507");
		stu5.setSex("女");
		data.add(stu5);
		
		OutputStream out = new FileOutputStream("E:/test.xls");
		Map<String, String> fields = new LinkedHashMap<>();//HashMap不会保证数据的顺序,LinkedHashMap可以保证数据的顺序
		fields.put("num", "学号");
		fields.put("name", "姓名");
		fields.put("age", "年龄");
		fields.put("sex", "性别");
		ExeclUtil.listToExecl(data, out, fields);

		//============================== 导入 =====================================
		HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("E:/test.xls"));
		//迭代每个工作簿
		for (int i = 0; i < workbook.getNumberOfSheets(); ++i) {
			HSSFSheet sheet = workbook.getSheetAt(i);
			if (sheet == null) {
				continue;
			}
			List<Student> data = new ArrayList<>();
			//循环每一行
			for (int j = 1; j < sheet.getLastRowNum(); ++j) {
				HSSFRow row = sheet.getRow(j);
				if (row == null) {
					continue;
				}
				Student student = new Student();
				student.setNum(row.getCell(0).getStringCellValue());
				student.setName(row.getCell(1).getStringCellValue());
				student.setAge(Integer.valueOf(row.getCell(2).getStringCellValue()));
				student.setSex(row.getCell(3).getStringCellValue());
				data.add(student);
			}
			for (Student stu : data) {
				System.out.println(stu.getNum() + " " + stu.getName() + " " + stu.getAge() + " " + stu.getSex());
			}
		}
	}
}

特定のデータは、JDBCを介してデータベースから取得できます。

56件の元の記事を公開 23のような 20,000以上の訪問

おすすめ

転載: blog.csdn.net/qq_42650988/article/details/104088387