Consultar un fichero excel desde internet
Publicado por EMILIO (1 intervención) el 11/10/2017 13:36:51
Hola a todos,
Estoy probando un codigo cuya funcion es la siguiente: una persona mete su dni a traves de un formulario, se compara con una base de datos en excel y devuelve los datos numericos correspondientes. El problema es que al probarlo en el localhost funciona pero cuando lo subo a internet con google app engine ,me da error, sera por la ubicacion de mi archivo excel en el proyecto? o quiza tengo que cambiar mi codigo. A ver si me podeis ayudar
Clase para importar excel
package com.edu4java.servelets;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ImportarExcel {
public static ArrayList<String> data= new ArrayList<String>();
public static ArrayList<Double> data2=new ArrayList<Double>();
public static void ObtenerArchivos() throws IOException{
FileInputStream file = new FileInputStream(new File("C:\\Users\\Emilio Espejo\\eclipse-workspace\\PAGINA WEB\\war\\excelbuenobueno.xlsx"));
// Crear el objeto que tendra el libro de Excel
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
Row row;
while (rowIterator.hasNext()){
row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
Cell celda;
while (cellIterator.hasNext()){
celda = cellIterator.next();
if (celda.getCellType() == Cell.CELL_TYPE_STRING) {
data.add(celda.getStringCellValue());
}
if (celda.getCellType() == Cell.CELL_TYPE_NUMERIC) {
data2.add(celda.getNumericCellValue());
//for(Double valores : data2){
//System.out.println(valores );
//}
}
}
}
workbook.close();
}
}
El servlet
package com.edu4java.servelets;
import com.edu4java.servelets.ImportarExcel;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
/**
*
*/
public static ArrayList<String> data3= ImportarExcel.data;
public static ArrayList<Double> data4= ImportarExcel.data2;
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
ImportarExcel.ObtenerArchivos();
String dni1 = req.getParameter("dni");
for( String dni: data3) {
int contador3=-1;
if(dni.equals(dni1)){
contador3 = data3.indexOf(dni);
response(resp, "El promotor con dni "+ dni1+" ha vendido " + data4.get((contador3*4))+" unidades de s8, otras "+ data4.get((contador3*4)+1)+" unidades del modelo note 8 ,va a tener un ajuste de "+ data4.get((contador3*4)+2)+ " y va a percibir "+ data4.get((contador3*4)+3)+ " euros brutos este mes" );
break;
}
else {
continue;
}
}
}
private void response(HttpServletResponse resp, String msg)
throws IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<t1>" + msg + "</t1>");
out.println("</body>");
out.println("</html>");
}
}
El archivo XML
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>login-servlet</servlet-name>
<servlet-class>com.edu4java.servelets.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login-servlet</servlet-name>
<url-pattern>/consulta</url-pattern>
</servlet-mapping>
</web-app>
Estoy probando un codigo cuya funcion es la siguiente: una persona mete su dni a traves de un formulario, se compara con una base de datos en excel y devuelve los datos numericos correspondientes. El problema es que al probarlo en el localhost funciona pero cuando lo subo a internet con google app engine ,me da error, sera por la ubicacion de mi archivo excel en el proyecto? o quiza tengo que cambiar mi codigo. A ver si me podeis ayudar
Clase para importar excel
package com.edu4java.servelets;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ImportarExcel {
public static ArrayList<String> data= new ArrayList<String>();
public static ArrayList<Double> data2=new ArrayList<Double>();
public static void ObtenerArchivos() throws IOException{
FileInputStream file = new FileInputStream(new File("C:\\Users\\Emilio Espejo\\eclipse-workspace\\PAGINA WEB\\war\\excelbuenobueno.xlsx"));
// Crear el objeto que tendra el libro de Excel
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
Row row;
while (rowIterator.hasNext()){
row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
Cell celda;
while (cellIterator.hasNext()){
celda = cellIterator.next();
if (celda.getCellType() == Cell.CELL_TYPE_STRING) {
data.add(celda.getStringCellValue());
}
if (celda.getCellType() == Cell.CELL_TYPE_NUMERIC) {
data2.add(celda.getNumericCellValue());
//for(Double valores : data2){
//System.out.println(valores );
//}
}
}
}
workbook.close();
}
}
El servlet
package com.edu4java.servelets;
import com.edu4java.servelets.ImportarExcel;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
/**
*
*/
public static ArrayList<String> data3= ImportarExcel.data;
public static ArrayList<Double> data4= ImportarExcel.data2;
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
ImportarExcel.ObtenerArchivos();
String dni1 = req.getParameter("dni");
for( String dni: data3) {
int contador3=-1;
if(dni.equals(dni1)){
contador3 = data3.indexOf(dni);
response(resp, "El promotor con dni "+ dni1+" ha vendido " + data4.get((contador3*4))+" unidades de s8, otras "+ data4.get((contador3*4)+1)+" unidades del modelo note 8 ,va a tener un ajuste de "+ data4.get((contador3*4)+2)+ " y va a percibir "+ data4.get((contador3*4)+3)+ " euros brutos este mes" );
break;
}
else {
continue;
}
}
}
private void response(HttpServletResponse resp, String msg)
throws IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<t1>" + msg + "</t1>");
out.println("</body>");
out.println("</html>");
}
}
El archivo XML
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>login-servlet</servlet-name>
<servlet-class>com.edu4java.servelets.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login-servlet</servlet-name>
<url-pattern>/consulta</url-pattern>
</servlet-mapping>
</web-app>
Valora esta pregunta


0