esoe
6 months ago
10 changed files with 348 additions and 57 deletions
@ -0,0 +1,104 @@ |
|||||||
|
package ru.molokoin.storage_rs.model; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
@AllArgsConstructor |
||||||
|
@NoArgsConstructor |
||||||
|
public class XlsxCell { |
||||||
|
private String content; //содержимое ячейки
|
||||||
|
private String textColor; //цвет шрифта
|
||||||
|
private String bgColor; // цвет заливки ячейки
|
||||||
|
private String textSize; //8-12-14-24 размеры шрифта
|
||||||
|
private int textWeight; //жирность: bold (900), normal(500),
|
||||||
|
private String type;// STRING, NUMERIC, BOOLEAN, FORMULA
|
||||||
|
|
||||||
|
public XlsxCell(String content){ |
||||||
|
this.content = content; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the content |
||||||
|
*/ |
||||||
|
public String getContent() { |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param content the content to set |
||||||
|
*/ |
||||||
|
public void setContent(String content) { |
||||||
|
this.content = content; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the textColor |
||||||
|
*/ |
||||||
|
public String getTextColor() { |
||||||
|
return textColor; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param textColor the textColor to set |
||||||
|
*/ |
||||||
|
public void setTextColor(String textColor) { |
||||||
|
this.textColor = textColor; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the bgColor |
||||||
|
*/ |
||||||
|
public String getBgColor() { |
||||||
|
return bgColor; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param bgColor the bgColor to set |
||||||
|
*/ |
||||||
|
public void setBgColor(String bgColor) { |
||||||
|
this.bgColor = bgColor; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the textSize |
||||||
|
*/ |
||||||
|
public String getTextSize() { |
||||||
|
return textSize; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param textSize the textSize to set |
||||||
|
*/ |
||||||
|
public void setTextSize(String textSize) { |
||||||
|
this.textSize = textSize; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the textWeight |
||||||
|
*/ |
||||||
|
public int getTextWeight() { |
||||||
|
return textWeight; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param textWeight the textWeight to set |
||||||
|
*/ |
||||||
|
public void setTextWeight(int textWeight) { |
||||||
|
this.textWeight = textWeight; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the type |
||||||
|
*/ |
||||||
|
public String getType() { |
||||||
|
return type; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param type the type to set |
||||||
|
*/ |
||||||
|
public void setType(String type) { |
||||||
|
this.type = type; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,137 @@ |
|||||||
|
package ru.molokoin.storage_rs.model; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
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.xssf.usermodel.XSSFWorkbook; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
@AllArgsConstructor |
||||||
|
@NoArgsConstructor |
||||||
|
public class XlsxDocument { |
||||||
|
private Map<Integer, List<XlsxCell>> data; |
||||||
|
private Document document; |
||||||
|
|
||||||
|
public XlsxDocument(Document document){ |
||||||
|
this.document = document; |
||||||
|
this.data = init(document); |
||||||
|
} |
||||||
|
|
||||||
|
private Map<Integer, List<XlsxCell>> init(Document document) { |
||||||
|
FileInputStream file; |
||||||
|
Workbook workbook; |
||||||
|
try { |
||||||
|
file = new FileInputStream(new File(document.getPath())); |
||||||
|
workbook = new XSSFWorkbook(file); |
||||||
|
|
||||||
|
Sheet sheet = workbook.getSheetAt(0); |
||||||
|
data = new HashMap<>(); |
||||||
|
Integer i = 0; |
||||||
|
for (Row row : sheet) { |
||||||
|
List<XlsxCell> xlsxCells = null; |
||||||
|
XlsxCell xlsxCell = null; |
||||||
|
for (Cell cell : row) { |
||||||
|
xlsxCells = new ArrayList<>(); |
||||||
|
switch (cell.getCellType()) { |
||||||
|
case STRING: { |
||||||
|
xlsxCell = new XlsxCell(cell.getStringCellValue() + ""); |
||||||
|
} break; |
||||||
|
case NUMERIC: { |
||||||
|
xlsxCell = new XlsxCell(cell.getNumericCellValue() + ""); |
||||||
|
} break; |
||||||
|
case BOOLEAN: { |
||||||
|
xlsxCell = new XlsxCell(cell.getBooleanCellValue() + ""); |
||||||
|
} break; |
||||||
|
case FORMULA: { |
||||||
|
xlsxCell = new XlsxCell(cell.getCellFormula() + ""); |
||||||
|
} break; |
||||||
|
default: |
||||||
|
} |
||||||
|
xlsxCells.add(xlsxCell); |
||||||
|
} |
||||||
|
data.put(i, xlsxCells); |
||||||
|
i++; |
||||||
|
} |
||||||
|
}catch (IOException e) { |
||||||
|
System.out.println("Не читается файл: " + e.getMessage()); |
||||||
|
} |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the data |
||||||
|
*/ |
||||||
|
public Map<Integer, List<XlsxCell>> getData() { |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param data the data to set |
||||||
|
*/ |
||||||
|
public void setData(Map<Integer, List<XlsxCell>> data) { |
||||||
|
this.data = data; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the document |
||||||
|
*/ |
||||||
|
public Document getDocument() { |
||||||
|
return document; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param document the document to set |
||||||
|
*/ |
||||||
|
public void setDocument(Document document) { |
||||||
|
this.document = document; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
final int prime = 31; |
||||||
|
int result = 1; |
||||||
|
result = prime * result + ((data == null) ? 0 : data.hashCode()); |
||||||
|
result = prime * result + ((document == null) ? 0 : document.hashCode()); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) |
||||||
|
return true; |
||||||
|
if (obj == null) |
||||||
|
return false; |
||||||
|
if (getClass() != obj.getClass()) |
||||||
|
return false; |
||||||
|
XlsxDocument other = (XlsxDocument) obj; |
||||||
|
if (data == null) { |
||||||
|
if (other.data != null) |
||||||
|
return false; |
||||||
|
} else if (!data.equals(other.data)) |
||||||
|
return false; |
||||||
|
if (document == null) { |
||||||
|
if (other.document != null) |
||||||
|
return false; |
||||||
|
} else if (!document.equals(other.document)) |
||||||
|
return false; |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -1,24 +0,0 @@ |
|||||||
<!DOCTYPE html> |
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" |
|
||||||
xmlns:th="http://www.thymeleaf.org"> |
|
||||||
<html> |
|
||||||
<head> |
|
||||||
<meta charset="UTF-8"> |
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
||||||
<title>upload-page</title> |
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2/webcomponents-loader.min.js"></script> |
|
||||||
<script type="module" src="https://cdn.jsdelivr.net/gh/zerodevx/zero-md@1/src/zero-md.min.js"></script> |
|
||||||
</head> |
|
||||||
<body> |
|
||||||
<form method="post" th:action="@{/upload}" enctype="multipart/form-data"> |
|
||||||
<div> |
|
||||||
<input type="file" name="file"> |
|
||||||
</div> |
|
||||||
<button type="submit">Upload File</button> |
|
||||||
</form> |
|
||||||
<div class="list"> |
|
||||||
|
|
||||||
|
|
||||||
</div> |
|
||||||
</body> |
|
||||||
</html> |
|
Loading…
Reference in new issue