初入社會,剛剛工作,代碼寫得很low,請多多包涵。
一:
public interface ProjectInfoMapper extends Mapper<ProjectInfo> {
//讀取Excel數據保存到臨時表
void save(ProjectInfo projectInfo);
//創建臨時表
void createTable(@Param("tableName") String tableName);
//查詢所有臨時表數據
List<ProjectInfo> findAll();
//臨時表數據導入到真實表
void export(ProjectInfo projectInfo);
}
二:
<mapper namespace="com.zhunda.dao.ProjectInfoMapper">
<insert id="save" parameterType="com.zhunda.pojo.ProjectInfo">
insert into tmp_table2(id,totalMoney,works,realityDate,remitMoney,office,auditDate,projectGroup)
values (#{id},#{totalMoney},#{works},#{realityDate},#{remitMoney},#{office},#{auditDate},#{projectGroup})
</insert>
<select id="findAll" resultType="com.zhunda.pojo.ProjectInfo">
select * from tmp_table2;
</select>
<insert id="createTable" parameterType="String">
CREATE TEMPORARY TABLE ${tableName}(
id VARCHAR(25) NOT NULL,
totalMoney VARCHAR(25) NOT NULL,
works VARCHAR(25) NOT NULL,
realityDate VARCHAR(25) NOT NULL,
remitMoney VARCHAR(25) NOT NULL,
office VARCHAR(25) NOT NULL,
auditDate VARCHAR(25) NOT NULL,
projectgroup VARCHAR(25) NOT NULL
)
</insert>
<insert id="export" parameterType="com.zhunda.pojo.ProjectInfo">
insert into projectinfo(id,total_Money,works,reality_Date,remit_Money,office,audit_Date,project_Group)
values (#{id},#{totalMoney},#{works},#{realityDate},#{remitMoney},#{office},#{auditDate},#{projectGroup})
</insert>
<mapper>
三:
/**
*
* @param s 桌面上Excel文件名,只能是後綴.xlsx
* @throws IOException
*/
public void OneSheetCheck(String s) throws IOException{
// 獲取桌面路徑
FileSystemView fsv = FileSystemView.getFileSystemView();
String desktop = fsv.getHomeDirectory().getPath();
String filePath = desktop +"\\"+s;
System.out.println(filePath);
FileInputStream fileInputStream = new FileInputStream(filePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
int count=1;
Map<String,List> map=new HashMap<String,List>();
XSSFWorkbook workbook =new XSSFWorkbook(bufferedInputStream);
//XSSFSheet sheet = workbook.getSheet("Test");
XSSFSheet sheet = workbook.getSheetAt(0);
//int numberOfSheets = workbook.getNumberOfSheets();
int lastRowIndex = sheet.getLastRowNum();
System.out.println("總共多少行:"+lastRowIndex);
//可遍歷一張表中所有工作簿
/* for (int a=0;a<numberOfSheets;a++) {
XSSFSheet sheet = workbook.getSheetAt(a);
int lastRowIndex = sheet.getLastRowNum();
System.out.println("總共多少行:"+lastRowIndex);
}*/
//創建臨時表
System.out.println("===========創建臨時表================");
projectInfoMapper.createTable("tmp_table2");
//分析Excel表
analyzerExcel(lastRowIndex, sheet, map);
//存入臨時表
getProjectData(map);
//存入真實表
saveProjectExcel(count);
bufferedInputStream.close();
fileInputStream.close();
}
四:
/**
* 分析Excel表並將所有數據存入map中
* @param lastRowIndex
* @param sheet
* @param map
*/
public void analyzerExcel(int lastRowIndex, XSSFSheet sheet, Map<String,List> map){
for (int i = 1; i <= lastRowIndex; i++) {
XSSFRow row = sheet.getRow(i);
short lastCellNum = row.getLastCellNum();
String s = String.valueOf(i).trim();
List<Object> strings= new ArrayList<>();
for(int j=0;j<lastCellNum;j++){
//調用getCellStringValue類處理格式問題
String cellStringValue = getCellStringValue(row.getCell(j));
strings.add(cellStringValue);
}
map.put(s,strings);
}
}
五:
/**
* 遍歷Excel取得數據存放到臨時表
* @param map
*/
public void getProjectData(Map<String,List> map){
for(List m:map.values()){//遍歷map的值
// System.out.println("值value :"+m);
ProjectInfo projectInfo = new ProjectInfo();
projectInfo.setId(m.get(0).toString());
projectInfo.setTotalMoney(m.get(1).toString());
projectInfo.setWorks(m.get(2).toString());
projectInfo.setRealityDate(m.get(3).toString());
projectInfo.setRemitMoney(m.get(4).toString());
projectInfo.setOffice(m.get(5).toString());
projectInfo.setAuditDate(m.get(6).toString());
projectInfo.setProjectGroup(m.get(7).toString());
projectInfoMapper.save(projectInfo);
}
}
六:
/**
* 獲取臨時表數據並存入真實表
* @param count
*/
public void saveProjectExcel(int count){
List<ProjectInfo> all = projectInfoMapper.findAll();
for (ProjectInfo n:all){
projectInfoMapper.export(n);
System.out.println("第"+count+"次:"+n);
count++;
}
}