EasyExcel是一个用于Android平台的简单易用的Excel导出库。要使用EasyExcel导出数据,请按照以下步骤操作:
dependencies {
implementation 'com.alibaba:easyexcel:2.2.10'
}
import com.alibaba.excel.annotation.ExcelProperty;
public class User {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
// 省略getter和setter方法
}
IOpenSheetWriter
接口的类(例如:UserSheetWriter.java),用于自定义导出逻辑。import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.AbstractCellStyleStrategy;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.VerticalCellStyleStrategy;
import com.alibaba.excel.write.writer.AbstractExcelWriter;
import com.alibaba.excel.write.writer.ExcelWriter;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.ArrayList;
import java.util.List;
public class UserSheetWriter extends AbstractCellStyleStrategy {
private List<User> userList = new ArrayList<>();
private WriteCellStyle headCellStyle;
private WriteCellStyle contentCellStyle;
public UserSheetWriter() {
// 初始化样式
initStyles();
}
private void initStyles() {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("用户表");
// 创建表头样式
CreationHelper createHelper = workbook.getCreationHelper();
WriteFont headWriteFont = createHelper.createFont();
headWriteFont.setBold(true);
headWriteFont.setFontName("Arial");
headWriteFont.setFontHeightInPoints((short) 12);
headCellStyle = workbook.createCellStyle();
headCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
headCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headCellStyle.setFont(headWriteFont);
// 创建内容样式
WriteFont contentWriteFont = createHelper.createFont();
contentWriteFont.setFontName("Arial");
contentWriteFont.setFontHeightInPoints((short) 10);
contentCellStyle = workbook.createCellStyle();
contentCellStyle.setFont(contentWriteFont);
}
@Override
protected void initCellStyle(AbstractExcelWriter writer, WriteSheet writeSheet) {
// 这里可以设置表头和内容单元格的样式,如果不需要自定义样式,可以不重写此方法
}
@Override
protected void writeHeadRow(AbstractExcelWriter writer, WriteSheet writeSheet) {
Row headRow = writeSheet.createRow(0);
for (int i = 0; i < User.class.getDeclaredFields().length; i++) {
Cell cell = headRow.createCell(i);
cell.setCellValue(User.class.getDeclaredFields()[i].getName());
cell.setCellStyle(headCellStyle);
}
}
@Override
protected void writeRow(AbstractExcelWriter writer, WriteSheet writeSheet, Row row, Object data) {
User user = (User) data;
for (int i = 0; i < user.getClass().getDeclaredFields().length; i++) {
Cell cell = row.createCell(i);
cell.setCellValue(user.getClass().getDeclaredFields()[i].getName() + ": " + user.getClass().getDeclaredFields()[i].get(user));
cell.setCellStyle(contentCellStyle);
}
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
UserSheetWriter
实例,并将数据添加到userList
中。然后使用EasyExcel.write()
方法导出Excel文件。import com.alibaba.excel.EasyExcel;
public class ExportActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_export);
// 创建数据
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 25));
userList.add(new User("李四", 30));
userList.add(new User("王五", 28));
// 创建UserSheetWriter实例
UserSheetWriter userSheetWriter = new UserSheetWriter();
userSheetWriter.setUserList(userList);
// 导出Excel文件
String fileName = "用户数据.xlsx";
EasyExcel.write(fileName).registerWriteHandler(userSheetWriter).sheet("用户表").doWrite(userList);
}
}
这样,当运行应用程序时,将会导出一个名为"用户数据.xlsx"的Excel文件,其中包含从userList
中获取的数据。