JAVA读取文件中的内容(.csv/.text/.xls)
依赖jxl.jar
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import com.dimeng.framework.service.exception.ParameterException;
import com.dimeng.util.StringHelper;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ImportFile extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Part part = request.getPart("file");
System.out.println(part.getContentType());
String[] mobiles = null;
if (!StringHelper.isEmpty(part.getContentType())){
if(part.getContentType().equals("application/csv") //导入CSV格式
|| part.getContentType().equals("text/plain") //导入txt格式
|| part.getContentType().equals("text/csv")){ //导入csv
mobiles = importMobilesByCsv(part.getInputStream(),"UTF-8");
}else if(part.getContentType().equals("application/vnd.ms-excel")|| //导入EXCLE格式(xls)
part.getContentType().equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") //导入EXCLE格式(xlsx)
||part.getContentType().equals("application/octet-stream")){ //苹果电脑导入.xls
mobiles = importMobilesByExcel(part.getInputStream(),"UTF-8");
}
}
}catch (Throwable e) {
e.printStackTrace();
}
}
private String[] importMobilesByCsv(InputStream inputStream, String charset) throws Throwable {
if (inputStream == null) {
throw new ParameterException("读取文件流不存在.");
}
if (StringHelper.isEmpty(charset)) {
charset = "GBK";
}
List<String> mobiles = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset))) {
String line = "";
while ((line = reader.readLine()) != null) {
mobiles.add(line);
}
}
return mobiles.toArray(new String[mobiles.size()]);
}
//读取excel(xls)
private String[] importMobilesByExcel(InputStream io, String charset) throws Throwable{
//1:创建workbook
Workbook workbook=Workbook.getWorkbook(io);
//2:获取第一个工作表sheet
Sheet sheet=workbook.getSheet(0);
//3:获取数据
// System.out.println("行:"+sheet.getRows());
// System.out.println("列:"+sheet.getColumns());
List<String> mobiles = new ArrayList<>();
for(int i=0;i<sheet.getRows();i++){
for(int j=0;j<sheet.getColumns();j++){
Cell cell=sheet.getCell(j,i);
mobiles.add(cell.getContents()+",");
}
}
//最后一步:关闭资源
workbook.close();
return mobiles.toArray(new String[mobiles.size()]);
}