|
@@ -9,10 +9,8 @@ import com.qmth.boot.tools.excel.model.ObjectParam;
|
|
|
import com.qmth.boot.tools.excel.writer.XlsWriter;
|
|
|
import com.qmth.boot.tools.excel.writer.XlsxWriter;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.apache.poi.ss.usermodel.Cell;
|
|
|
-import org.apache.poi.ss.usermodel.Row;
|
|
|
-import org.apache.poi.ss.usermodel.Sheet;
|
|
|
-import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
@@ -50,7 +48,7 @@ public abstract class ExcelWriter {
|
|
|
Sheet sheet = getWorkbook().createSheet(sheetName);
|
|
|
AtomicInteger rowIndex = new AtomicInteger(0);
|
|
|
//生成标题
|
|
|
- writeTitle(sheet, rowIndex, titles);
|
|
|
+ writeTitle(sheet, rowIndex, titles, columnNames.length);
|
|
|
//生成表头
|
|
|
writeColumnName(sheet, rowIndex, columnNames);
|
|
|
//生成数据
|
|
@@ -71,7 +69,7 @@ public abstract class ExcelWriter {
|
|
|
Sheet sheet = getWorkbook().createSheet(sheetName);
|
|
|
AtomicInteger rowIndex = new AtomicInteger(0);
|
|
|
//生成标题
|
|
|
- writeTitle(sheet, rowIndex, titles);
|
|
|
+ writeTitle(sheet, rowIndex, titles, columnNames.length);
|
|
|
//生成表头
|
|
|
writeColumnName(sheet, rowIndex, columnNames);
|
|
|
//生成数据
|
|
@@ -92,10 +90,10 @@ public abstract class ExcelWriter {
|
|
|
public <E> void writeObjects(String sheetName, String[] titles, Class<E> objectType, Iterator<E> objectIterator) {
|
|
|
Sheet sheet = getWorkbook().createSheet(sheetName);
|
|
|
AtomicInteger rowIndex = new AtomicInteger(0);
|
|
|
+ ObjectParam objectParam = ObjectParam.get(objectType);
|
|
|
//生成标题
|
|
|
- writeTitle(sheet, rowIndex, titles);
|
|
|
+ writeTitle(sheet, rowIndex, titles, objectParam.getColumnNames().length);
|
|
|
//生成表头
|
|
|
- ObjectParam objectParam = ObjectParam.get(objectType);
|
|
|
writeColumnName(sheet, rowIndex, objectParam.getColumnNames());
|
|
|
//生成数据
|
|
|
while (objectIterator.hasNext()) {
|
|
@@ -103,12 +101,19 @@ public abstract class ExcelWriter {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void writeTitle(Sheet sheet, AtomicInteger rowIndex, String[] titles) {
|
|
|
+ private void writeTitle(Sheet sheet, AtomicInteger rowIndex, String[] titles, int columnCount) {
|
|
|
if (titles != null && titles.length > 0) {
|
|
|
for (String title : titles) {
|
|
|
Row row = sheet.createRow(rowIndex.getAndIncrement());
|
|
|
Cell cell = row.createCell(0);
|
|
|
cell.setCellValue(title);
|
|
|
+ CellStyle style = getWorkbook().createCellStyle();
|
|
|
+ style.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ //根据表头宽度合并单元格
|
|
|
+ if (columnCount > 1) {
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(row.getRowNum(), row.getRowNum(), 0, columnCount - 1));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -166,7 +171,11 @@ public abstract class ExcelWriter {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public abstract Workbook getWorkbook();
|
|
|
+ protected abstract Workbook getWorkbook();
|
|
|
+
|
|
|
+ private CellStyle createCellStyle() {
|
|
|
+ return getWorkbook().createCellStyle();
|
|
|
+ }
|
|
|
|
|
|
public void output(OutputStream ous) throws IOException {
|
|
|
getWorkbook().write(ous);
|