导入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency>
import org.apache.poi.xwpf.usermodel.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Field;
public class WordDocumentExporter {
public void exportToWord(HttpServletResponse response, Object data) {
XWPFDocument document = new XWPFDocument();
// 创建表格
XWPFTable table = document.createTable();
XWPFTableRow headerRow = table.getRow(0);
headerRow.getCell(0).setText("属性名");
headerRow.addNewTableCell().setText("属性值");
// 获取类的所有属性
Field[] fields = data.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
String fieldName = field.getName();
String fieldValue = "";
try {
Object value = field.get(data);
fieldValue = value != null ? value.toString() : "";
} catch (IllegalAccessException e) {
e.printStackTrace();
}
XWPFTableRow row = table.createRow();
row.getCell(0).setText(fieldName);
row.getCell(1).setText(fieldValue);
}
try {
// 设置响应头
response.setContentType("application/msword");
response.setHeader("Content-Disposition", "attachment; filename=output.docx");
// 输出到浏览器
document.write(response.getOutputStream());
response.getOutputStream().close();
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}