package com.cabletech.business.ah.excelreport.sum.impl;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Component;
import com.cabletech.business.ah.excelreport.model.AhExcelReportRecode;
import com.cabletech.business.ah.excelreport.model.AhExcelReportSheet;
import com.cabletech.business.ah.excelreport.sum.BaseSheetSumGenerate;
import com.cabletech.business.excel.AutoGenerateFactory;
import com.cabletech.business.excel.AutoGenerateUtils;
import com.cabletech.business.excel.TableCellData;
/**
* 包含合计行Sheet按地市汇总
*
* @author 杨隽 2012-06-28 创建
*
*/
@Component
public class SheetSumGenerateS0ShS1 extends BaseSheetSumGenerate {
@Override
public int getTableTdStr(Workbook xwb, AhExcelReportSheet sheetType,
List<List<TableCellData>> rowDataList, AhExcelReportRecode record,
int rowIndex) {
Sheet sheet = xwb.getSheetAt(sheetType.getSheetNum());
Row row;
List<TableCellData> cellDataList = new ArrayList<TableCellData>();
TableCellData regionCellData = new TableCellData();
String regionName = (String) baseInfoProvider.getRegionService()
.getRegionMap(record.getRegionId()).get("REGIONNAME");
regionCellData.setWidth(100);
regionCellData.setCellValue(regionName);
regionCellData.setRowIndex(rowIndex);
regionCellData.setColIndex(0);
cellDataList.add(regionCellData);
for (int i = DATA_START_ROW_INDEX; i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
if (AutoGenerateUtils.isEmpty(row)) {
continue;
}
if (!super.isSumRow(sheetType, row)) {
continue;
}
int descCol = 0;
for (int j = SUM_START_COL_INDEX; j < row.getLastCellNum(); j++) {
if (super.isNotSumColumn(sheet, j)) {
descCol++;
continue;
}
TableCellData data = new TableCellData();
int width = (int) (sheet.getColumnWidth(j) * AutoGenerateUtils.CHAR_WIDTH_PERCENT);
String cellValue = AutoGenerateUtils.getCellValue(row, j);
super.getTotalSumValueMap(sheet, cellValue, j);
super.getJoinTotalSumValueMap(xwb, sheet, j);
data.setWidth(width);
data.setCellValue(cellValue);
data.setRowIndex(rowIndex);
data.setColIndex(j - SUM_START_COL_INDEX - descCol + 1);
cellDataList.add(data);
}
}
super.wbList.add(xwb);
rowDataList.add(cellDataList);
return rowIndex + 1;
}
@Override
public List<List<TableCellData>> getTableSubjectStr(
AhExcelReportSheet sheetType, List<AhExcelReportRecode> list)
throws Exception {
List<List<TableCellData>> rowDataList = new ArrayList<List<TableCellData>>();
AhExcelReportRecode record = list.get(0);
String path = record.getFileUrl();
Workbook xwb = AutoGenerateFactory.getWorkbook(path);
Sheet sheet = xwb.getSheetAt(sheetType.getSheetNum());
int rowSpan = DATA_START_ROW_INDEX - sheetType.getRow();
for (int i = sheetType.getRow(); i < DATA_START_ROW_INDEX; i++) {
Row row = sheet.getRow(i);
if (AutoGenerateUtils.isEmpty(row)) {
continue;
}
List<TableCellData> cellDataList = new ArrayList<TableCellData>();
TableCellData data = new TableCellData();
if (i == sheetType.getRow()) {
data.setRowSpan(rowSpan);
data.setWidth(100);
data.setCellValue("地市");
data.setRowIndex(i - sheetType.getRow());
data.setColIndex(0);
cellDataList.add(data);
}
int descCol = 0;
for (int j = SUM_START_COL_INDEX; j < row.getLastCellNum(); j++) {
if (super.isNotSumColumn(sheet, j)) {
descCol++;
continue;
}
data = AutoGenerateUtils.getTdGenerateData(sheet, i, j);
if (data != null) {
data.setRowIndex(i - sheetType.getRow());
data.setColIndex(j - SUM_START_COL_INDEX - descCol + 1);
cellDataList.add(data);
}
}
rowDataList.add(cellDataList);
}
return rowDataList;
}
}