master
黄海 4 years ago
parent 1220f1cad4
commit 4ca1131e85

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: javax.mail:mail:1.4.7">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/mail/mail/1.4.7/mail-1.4.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/mail/mail/1.4.7/mail-1.4.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/mail/mail/1.4.7/mail-1.4.7-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: net.sourceforge.jexcelapi:jxl:2.6.12">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jexcelapi/jxl/2.6.12/jxl-2.6.12-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.jsoup:jsoup:1.10.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.10.1/jsoup-1.10.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.10.1/jsoup-1.10.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.10.1/jsoup-1.10.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.jsoup:jsoup:1.12.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.12.1/jsoup-1.12.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.12.1/jsoup-1.12.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.12.1/jsoup-1.12.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="aspose-cells-8.5.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/aspose-cells-8.5.2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

@ -10,4 +10,11 @@
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="SuppressABINotification">
<option name="modulesWithSuppressedNotConfigured">
<set>
<option value="RunQianUpdate" />
</set>
</option>
</component>
</project>

@ -27,7 +27,7 @@
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.12.1" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.10.1" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.20" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
@ -37,11 +37,14 @@
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-email:1.5" level="project" />
<orderEntry type="library" name="Maven: com.sun.mail:javax.mail:1.5.6" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.20" level="project" />
<orderEntry type="library" name="Maven: org.apache.ant:ant:1.9.7" level="project" />
<orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.9.7" level="project" />
<orderEntry type="library" name="Maven: org.postgresql:postgresql:42.2.20" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
<orderEntry type="library" name="Maven: javax.mail:mail:1.4.7" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: net.sourceforge.jexcelapi:jxl:2.6.12" level="project" />
<orderEntry type="library" name="aspose-cells-8.5.2" level="project" />
</component>
</module>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -119,6 +119,24 @@
<artifactId>postgresql</artifactId>
<version>42.2.20</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.1</version>
</dependency>
<!--jxl-->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
</dependencies>
<build>
<plugins>

@ -0,0 +1,171 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import jxl.Cell;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
public class ExcelTransformHtml {
public static String getExcelInfo(File sourcefile) throws Exception {
StringBuffer sb = new StringBuffer();
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
Sheet sheet = rwb.getSheet(0);
int colnum = sheet.getColumns();
int rownum = sheet.getRows();
Map<String, String> map[] = getRowSpanColSpanMap(sheet);
sb.append("<table border='1' cellspacing='0'>");
for (int row = 0; row < rownum; row++) {
sb.append("<tr>");
for (int col = 0; col < colnum; col++) {
Cell cell = sheet.getCell(col, row);
String content = cell.getContents();
CellFormat cellFormat = cell.getCellFormat();
if (map[0].containsKey(row + "," + col)) {
String pointString = map[0].get(row + "," + col);
map[0].remove(row + "," + col);
int bottomeRow = Integer.valueOf(pointString.split(",")[0]);
int bottomeCol = Integer.valueOf(pointString.split(",")[1]);
int rowSpan = bottomeRow - row + 1;
int colSpan = bottomeCol - col + 1;
sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' ");
} else if (map[1].containsKey(row + "," + col)) {
map[1].remove(row + "," + col);
continue;
} else {
sb.append("<td ");
}
if (cellFormat != null) {
Alignment alignment = cellFormat.getAlignment();
sb.append("align='" + convertToHtmlGrammer(alignment) + "' ");
VerticalAlignment verticalAlignment = cellFormat.getVerticalAlignment();
sb.append("valign='" + convertToHtmlGrammer(verticalAlignment) + "' ");
// sb.append("style='color:" + convertToHtmlGrammer(cellFormat.getFont().getColour()) + ";"); //
Colour bgcolour = cellFormat.getBackgroundColour();
// sb.append("background-color:" + convertToHtmlGrammer(bgcolour) + ";"); //
// Colour bottomColour = cellFormat.getBorderColour(Border.BOTTOM); //
// Colour leftColour = cellFormat.getBorderColour(Border.LEFT);
// Colour rightColour = cellFormat.getBorderColour(Border.RIGHT);
// Colour topColour = cellFormat.getBorderColour(Border.TOP);
// System.out.print("bottomColour:" +
// bottomColour.getDescription());
// System.out.print(" leftColour:" +
// leftColour.getDescription());
// System.out.print(" rightColour:" +
// rightColour.getDescription());
// System.out.println(" topColour:" +
// topColour.getDescription());
// sb.append("border-color:" + convertToHtmlGrammer(bottomColour) + ";"); //
sb.append("' ");
}
sb.append(">");
if (content == null || "".equals(content.trim())) {
sb.append(" ");
} else {
sb.append(content);
}
sb.append("</td>");
}
sb.append("</tr>");
}
sb.append("</table>");
rwb.close();
is.close();
return sb.toString();
}
@SuppressWarnings("unchecked")
private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {
Map<String, String> map0 = new HashMap<String, String>();
Map<String, String> map1 = new HashMap<String, String>();
Range[] range = sheet.getMergedCells();
for (int i = 0; i < range.length; i++) {
Cell topCell = range[i].getTopLeft();
Cell bottomCell = range[i].getBottomRight();
int topRow = topCell.getRow();
int topCol = topCell.getColumn();
int bottomRow = bottomCell.getRow();
int bottomCol = bottomCell.getColumn();
map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol);
int tempRow = topRow;
while (tempRow <= bottomRow) {
int tempCol = topCol;
while (tempCol <= bottomCol) {
map1.put(tempRow + "," + tempCol, "");
tempCol++;
}
tempRow++;
}
map1.remove(topRow + "," + topCol);
}
Map[] map = { map0, map1 };
return map;
}
private static String convertToHtmlGrammer(Alignment alignment) {
String align = "left";
switch (alignment.getValue()) {
case 1:
align = "left";
break;
case 2:
align = "center";
break;
case 3:
align = "right";
break;
case 5:
align = "justify";
break;
default:
break;
}
return align;
}
private static String convertToHtmlGrammer(VerticalAlignment verticalAlignment) {
String valign = "middle";
switch (verticalAlignment.getValue()) {
case 1:
valign = "middle";
break;
case 2:
valign = "bottom";
break;
case 3:
valign = "top";
break;
default:
break;
}
return valign;
}
/*private static String convertToHtmlGrammer(Colour colour) {
StringBuffer sb = new StringBuffer("");
if (colour != null && !"default background".equalsIgnoreCase(colour.getDescription())) {
sb.append("#");
sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getRed())));
sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getGreen())));
sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getBlue())));
}
return sb.toString();
}*/
private static String fillWithZero(String str) {
if (str != null && str.length() < 2) {
return "0" + str;
}
return str;
}
}

@ -0,0 +1,66 @@
import java.io.*;
import com.aspose.cells.*;
public class HtmlToExcel {
public static boolean getLicense() {
boolean result = false;
try {
InputStream is = HtmlToExcel.class.getClassLoader().getResourceAsStream("license.xml"); // license.xml应放在..\WebRoot\WEB-INF\classes路径下
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static String readFileContent(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
StringBuffer sbf = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(file));
String tempStr;
while ((tempStr = reader.readLine()) != null) {
sbf.append(tempStr);
}
reader.close();
return sbf.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return sbf.toString();
}
public static void main(String[] args) throws Exception {
if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生
return;
}
String html = readFileContent("d:\\test.htm");
ByteArrayInputStream bais = new ByteArrayInputStream(html.getBytes());
String path = "d:\\test.xlsx";
FileOutputStream fos = new FileOutputStream(path);
// 加载选项html否则会出错
LoadOptions lo = new LoadOptions(LoadFormat.HTML);
Workbook workbook = new Workbook(bais, lo);
workbook.getWorksheets().get(0).setGridlinesVisible(true); // 显示网格线
workbook.getWorksheets().get(0).getHyperlinks().clear();// 清除超链接
workbook.getWorksheets().get(0).autoFitColumns();// 设置自适应列宽
// 输出保存
workbook.save(fos, SaveFormat.XLSX);
fos.close();
workbook.dispose();
}
}

@ -0,0 +1,155 @@
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.*;
import java.util.Enumeration;
public class Mht2HtmlUtil {
public static void main(String[] args) throws Exception {
mht2html("C:\\Users\\Administrator\\Desktop\\028初中阶段校数、班数.mht", "d:\\test.htm");
}
/**
* mht html
*
* @param srcMht // mht 文件的位置
* @param descHtml // 转换后输出的HTML的位置
*/
public static void mht2html(String srcMht, String descHtml) {
try {
InputStream fis = new FileInputStream(srcMht);
Session mailSession = Session.getDefaultInstance(
System.getProperties(), null);
MimeMessage msg = new MimeMessage(mailSession, fis);
Object content = msg.getContent();
if (content instanceof Multipart) {
MimeMultipart mp = (MimeMultipart) content;
MimeBodyPart bp1 = (MimeBodyPart) mp.getBodyPart(0);
// 获取mht文件内容代码的编码
String strEncodng = getEncoding(bp1);
// 获取mht文件的内容
String strText = getHtmlText(bp1, strEncodng);
if (strText == null)
return;
// 最后保存HTML文件
SaveHtml(strText, descHtml);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* html
*
* @param s_HtmlTxt
* @param s_HtmlPath
*/
public static boolean SaveHtml(String s_HtmlTxt, String s_HtmlPath) {
try {
Writer out = null;
out = new OutputStreamWriter(
new FileOutputStream(s_HtmlPath, false), "utf-8");
out.write(s_HtmlTxt);
out.close();
} catch (Exception e) {
return false;
}
return true;
}
/**
* mht
*
* @param bp
* @param strEncoding mht
* @return
*/
private static String getHtmlText(MimeBodyPart bp, String strEncoding) {
InputStream textStream = null;
BufferedInputStream buff = null;
BufferedReader br = null;
Reader r = null;
try {
textStream = bp.getInputStream();
buff = new BufferedInputStream(textStream);
r = new InputStreamReader(buff, strEncoding);
br = new BufferedReader(r);
StringBuffer strHtml = new StringBuffer("");
String strLine = null;
while ((strLine = br.readLine()) != null) {
System.out.println(strLine);
strHtml.append(strLine + "\r\n");
}
br.close();
r.close();
textStream.close();
return strHtml.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (buff != null)
buff.close();
if (textStream != null)
textStream.close();
} catch (Exception e) {
}
}
return null;
}
/**
* mht
*
* @param bp
* @return
*/
private static String getEncoding(MimeBodyPart bp) {
if (bp == null) {
return null;
}
try {
Enumeration list = bp.getAllHeaders();
while (list.hasMoreElements()) {
javax.mail.Header head = (javax.mail.Header) list.nextElement();
if (head.getName().equalsIgnoreCase("Content-Type")) {
String strType = head.getValue();
int pos = strType.indexOf("charset=");
if (pos >= 0) {
String strEncoding = strType.substring(pos + 8,
strType.length());
if (strEncoding.startsWith("\"")
|| strEncoding.startsWith("\'")) {
strEncoding = strEncoding.substring(1,
strEncoding.length());
}
if (strEncoding.endsWith("\"")
|| strEncoding.endsWith("\'")) {
strEncoding = strEncoding.substring(0,
strEncoding.length() - 1);
}
if (strEncoding.toLowerCase().compareTo("gb2312") == 0) {
strEncoding = "gbk";
}
return strEncoding;
}
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
Loading…
Cancel
Save