|
|
@@ -34,7 +34,9 @@ public class YakOutboundReportExcelExporter
|
|
34
|
34
|
|
|
35
|
35
|
private static final int COL_SELF_SUBTOTAL = 14;
|
|
36
|
36
|
|
|
37
|
|
- private static final Pattern YEAR_IN_TEXT = Pattern.compile("(\\d{4})年");
|
|
|
37
|
+ private static final Pattern YEAR_IN_TEXT = Pattern.compile("(\\d{4})\\s*年");
|
|
|
38
|
+
|
|
|
39
|
+ private static final Pattern SHEET_YEAR_NAME = Pattern.compile("(\\d{2,4})年出栏");
|
|
38
|
40
|
|
|
39
|
41
|
public byte[] export(Integer statYear, List<SysDept> towns, Map<Long, BizYakOutboundReport> reportByTownId)
|
|
40
|
42
|
{
|
|
|
@@ -72,7 +74,8 @@ public class YakOutboundReportExcelExporter
|
|
72
|
74
|
{
|
|
73
|
75
|
throw new ServiceException("未识别到表头行(乡镇/户数/牦牛)");
|
|
74
|
76
|
}
|
|
75
|
|
- updateTitleYear(sheet, statYear);
|
|
|
77
|
+ updateTitleYear(sheet, statYear, headerRowIndex);
|
|
|
78
|
+ updateSheetName(workbook, sheet, statYear);
|
|
76
|
79
|
int dataStartRow = headerRowIndex + 1;
|
|
77
|
80
|
clearTemplateDataRegion(sheet, dataStartRow);
|
|
78
|
81
|
Totals totals = new Totals();
|
|
|
@@ -127,9 +130,15 @@ public class YakOutboundReportExcelExporter
|
|
127
|
130
|
}
|
|
128
|
131
|
|
|
129
|
132
|
static void updateTitleYear(Sheet sheet, int statYear)
|
|
|
133
|
+ {
|
|
|
134
|
+ updateTitleYear(sheet, statYear, YakOutboundReportExcelParser.detectHeaderRow(sheet));
|
|
|
135
|
+ }
|
|
|
136
|
+
|
|
|
137
|
+ static void updateTitleYear(Sheet sheet, int statYear, int headerRowIndex)
|
|
130
|
138
|
{
|
|
131
|
139
|
DataFormatter formatter = new DataFormatter();
|
|
132
|
|
- int last = Math.min(sheet.getLastRowNum(), 4);
|
|
|
140
|
+ int last = Math.max(headerRowIndex + 1, 4);
|
|
|
141
|
+ last = Math.min(last, sheet.getLastRowNum());
|
|
133
|
142
|
for (int r = 0; r <= last; r++)
|
|
134
|
143
|
{
|
|
135
|
144
|
Row row = sheet.getRow(r);
|
|
|
@@ -163,6 +172,22 @@ public class YakOutboundReportExcelExporter
|
|
163
|
172
|
}
|
|
164
|
173
|
}
|
|
165
|
174
|
|
|
|
175
|
+ static void updateSheetName(Workbook workbook, Sheet sheet, int statYear)
|
|
|
176
|
+ {
|
|
|
177
|
+ String suffix = (statYear % 100) + "年出栏";
|
|
|
178
|
+ String current = sheet.getSheetName();
|
|
|
179
|
+ if (StringUtils.isNotEmpty(current))
|
|
|
180
|
+ {
|
|
|
181
|
+ Matcher matcher = SHEET_YEAR_NAME.matcher(current);
|
|
|
182
|
+ if (matcher.find())
|
|
|
183
|
+ {
|
|
|
184
|
+ workbook.setSheetName(workbook.getSheetIndex(sheet), matcher.replaceAll(suffix));
|
|
|
185
|
+ return;
|
|
|
186
|
+ }
|
|
|
187
|
+ }
|
|
|
188
|
+ workbook.setSheetName(workbook.getSheetIndex(sheet), suffix);
|
|
|
189
|
+ }
|
|
|
190
|
+
|
|
166
|
191
|
private static void clearDataCells(Row row)
|
|
167
|
192
|
{
|
|
168
|
193
|
short lastCell = row.getLastCellNum();
|