java 通过接口下载excel并转实体类工具类
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
工具类
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.lang.Nullable;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class HttpClientDownload {
public static <T> List<T> doGetDownload(String url, boolean isHttps, String authorization,Class zclass) {
InputStream inputStream = null;
org.apache.http.impl.client.CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
List<T> list = new ArrayList<>();
try {
if (isHttps) {
SSLContext sslContext = SSLContextBuilder.create().useProtocol(SSLConnectionSocketFactory.SSL).loadTrustMaterial((x, y) -> true).build();
RequestConfig config = RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(60000).build();
httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).setSSLContext(sslContext).setSSLHostnameVerifier((x, y) -> true).build();
} else {
httpClient = HttpClientBuilder.create().build();
}
HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Authorization", authorization);
httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
list = readExcelConvertObjectList(inputStream,ExcelTypeEnum.XLS,zclass);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
public static <T> List<T> readExcelConvertObjectList(InputStream inputStream, ExcelTypeEnum excelTypeEnum, Class<T> classT) {
return readExcelConvertObjectList(inputStream, excelTypeEnum, 0,1, classT);
}
public static <T> List<T> readExcelConvertObjectList(InputStream inputStream, ExcelTypeEnum excelTypeEnum, @Nullable Integer sheet,
@Nullable Integer headLineNum, Class<T> classT) {
if (headLineNum == null) {
headLineNum = 1;
}
if (sheet == null) {
sheet = 0;
}
return EasyExcel.read(inputStream).excelType(excelTypeEnum)
.head(classT)
.sheet(sheet)
.headRowNumber(headLineNum)
.doReadSync();
}
}