我正在尝试将数据从 mysql 数据库导出到 csv 文件,但我不明白。我有下一件事。
在jsp中我有这个:
<s:url id="fileDownload" namespace="/" action="download" ></s:url>
<a href="%{fileDownload}"><s:submit value="Exportar CSV" id="btn_exportar_csv" name="btn_exportar_csv" cssClass="botones" width="50px"></s:submit></a>
在struts文件中我有这个:
<action name="download" class="es.uniway.action.pedidos.ExportarFicherosAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename="fileABC.txt"</param>
<param name="bufferSize">1024</param>
</result>
在行动中我有这个:
package es.uniway.action.pedidos;
import java.io.ByteArrayInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.axis.MessageContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import Services.Web.CCIS.BasicHttpBinding_PublicApiServiceStub;
import Services.Web.CCIS.PublicApiService_PortType;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import es.uniway.bean.TPedidosClientes;
import es.uniway.bean.TRespuestaPedidosClientes;
import es.uniway.bean.Tdatoscuentas;
import es.uniway.wscloud.WscloudImplServiceLocator;
import es.uniway.wscloud.WscloudImplSoapBindingStub;
public class ExportarFicherosAction extends ActionSupport implements ServletRequestAware{
Map session;
Tdatoscuentas [] datoscuentas;
private HttpServletRequest servletRequest;
private HttpServletResponse response;
TRespuestaPedidosClientes pedidosClientes;
TPedidosClientes [] pedClientes;
private List<Date> FechaAprobacion;
public boolean submit=false;
Date dateC=null;
Date dateI=new Date();
Date dateF=new Date();
Date date1=new Date();
Date date2= new Date();
Date []fechas= null;
Date []fechasI = null;
Date []fechasF = null;
private String cuentasID;
public String nuevaBusqueda;
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename=temp.csv");
ServletOutputStream out = response.getOutputStream();
java.net.URL portAddressCloud = new java.net.URL("http://localhost:8080/webServiceCloud2/services/WscloudImpl");
WscloudImplServiceLocator wscloudServiceLocator = new WscloudImplServiceLocator();
//WscloudImpl wscloud = wscloudServiceLocator.getWscloudImpl(portAddress);
WscloudImplSoapBindingStub bsStubcloud=null;
bsStubcloud=(WscloudImplSoapBindingStub) wscloudServiceLocator.getWscloudImpl(portAddressCloud);
session = ActionContext.getContext().getSession();
PublicApiService_PortType puerto=(PublicApiService_PortType) session.get("puerto");
((BasicHttpBinding_PublicApiServiceStub)puerto).setMaintainSession(true);
MessageContext ctx=(MessageContext) session.get("contexto");
session.put("date1", date1);
session.put("date2", date2);
String usuario=(String) session.get("usuario");
System.out.println("Usuario es:"+usuario);
String id_tipo_cuenta = (String) session.get("id_tipo_cuenta");
String n_cuenta = (String) session.get("n_cuenta");
System.out.println("El id_tipo_cuenta es:"+id_tipo_cuenta+" y el número de cuenta es:"+n_cuenta);
Tdatoscuentas[] params=bsStubcloud.consultarCuentas(Integer.parseInt(id_tipo_cuenta),n_cuenta);
System.out.println("Params es"+params.length);
System.out.println("el id de params es:"+params[0].getId_cuenta());
System.out.println("EL id de params de cuenta padre es:"+params[0].getId_cuenta_padre());
session.put("params", params);
int cliente=Integer.valueOf(servletRequest.getParameter("cuentasID").toString());
if(cliente!=-1){
String esquema=(String) session.get("Id_esquema_asociado_session");
String proveedor=(String) session.get("Id_proveedor_cloud_session");
System.out.println("El esquema es:"+esquema);
System.out.println("El proveedor es:"+proveedor);
System.out.println("La fecha es:"+servletRequest.getParameter("date1"));
System.out.println("Esto es:"+servletRequest.getParameter("edt_pedido"));
int nivel=Integer.valueOf(id_tipo_cuenta);
int cuenta=Integer.valueOf(servletRequest.getParameter("cuentasID"));
DateFormat formatter ;
Date date ;
formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
date = (Date)formatter.parse(servletRequest.getParameter("date1"));
Calendar cal=Calendar.getInstance();
cal.setTime(date);
System.out.println("Today is " +date );
System.out.println("Today dos:"+cal.getTime());
Date f_inicioAux=cal.getTime();
Date date2 = (Date)formatter.parse(servletRequest.getParameter("date2"));
Calendar calF=Calendar.getInstance();
cal.setTime(date2);
System.out.println("Today is " +date.toString());
pedidosClientes=bsStubcloud.consultarPedidosClientes(params[0].getId_cuenta_padre(), nivel, cuenta, cal, calF, 0, servletRequest.getParameter("edt_pedido").toString(),date.toString(),date2.toString());
pedClientes=pedidosClientes.getDatosPedidosClientes();
fechas= new Date[pedidosClientes.getDatosPedidosClientes().length];
fechasI = new Date[pedidosClientes.getDatosPedidosClientes().length];
fechasF = new Date[pedidosClientes.getDatosPedidosClientes().length];
for(int i=0;i<pedidosClientes.getDatosPedidosClientes().length;i++){
System.out.println("iiiiiiiii"+pedidosClientes.getDatosPedidosClientes().length);
dateC=pedidosClientes.getDatosPedidosClientes()[i].getF_creacion().getTime();
dateI=pedidosClientes.getDatosPedidosClientes()[i].getF_inicio_contrato().getTime();
dateF=pedidosClientes.getDatosPedidosClientes()[i].getF_fin_contrato().getTime();
fechas[i]=dateC;
fechasI[i]=dateI;
fechasF[i]=dateF;
System.out.println(dateF);
//FechaAprobacion.add(dateC);
}
setFechas(fechas);
setFechasI(fechasI);
setFechasF(fechasF);
setPedClientes(pedClientes);
System.out.println("Pedidos clientes ha devuelto:"+pedidosClientes.getDatosPedidosClientes().length);
StringBuffer sb = exportar_CSV(pedClientes);
//session.put("pedidos",pedidosClientes);
InputStream in =
new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(in.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
in.close();
out.flush();
out.close();
}
return "SUCCESS";
}
public HttpServletRequest getServletRequest() {
return servletRequest;
}
public Tdatoscuentas[] getDatoscuentas() {
return datoscuentas;
}
public void setDatoscuentas(Tdatoscuentas[] datoscuentas) {
this.datoscuentas = datoscuentas;
}
public boolean isSubmit() {
return submit;
}
public void setSubmit(boolean submit) {
this.submit = submit;
}
public TRespuestaPedidosClientes getPedidosClientes() {
return pedidosClientes;
}
public void setPedidosClientes(TRespuestaPedidosClientes pedidosClientes) {
this.pedidosClientes = pedidosClientes;
}
public TPedidosClientes[] getPedClientes() {
return pedClientes;
}
public void setPedClientes(TPedidosClientes[] pedClientes) {
this.pedClientes = pedClientes;
}
public Date[] getFechas() {
return fechas;
}
public void setFechas(Date[] fechas) {
this.fechas = fechas;
}
public Date[] getFechasI() {
return fechasI;
}
public void setFechasI(Date[] fechasI) {
this.fechasI = fechasI;
}
public Date[] getFechasF() {
return fechasF;
}
public void setFechasF(Date[] fechasF) {
this.fechasF = fechasF;
}
public String getCuentasID() {
return cuentasID;
}
public void setCuentasID(String cuentasID) {
this.cuentasID = cuentasID;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public Date getDateI() {
return new Date();
}
public void setDateI(Date dateI) {
this.dateI = dateI;
}
public Date getDateF() {
return new Date();
}
public void setDateF(Date dateF) {
this.dateF = dateF;
}
public Date getDate1() {
return date1;
}
public void setDate1(Date date1) {
this.date1 = date1;
}
public Date getDate2() {
return date2;
}
public void setDate2(Date date2) {
this.date2 = date2;
}
public String getNuevaBusqueda() {
return nuevaBusqueda;
}
public void setNuevaBusqueda(String nuevaBusqueda) {
this.nuevaBusqueda = nuevaBusqueda;
}
private static StringBuffer exportar_CSV(TPedidosClientes[] pedClientes2) throws IOException {
// TODO Auto-generated method stub
StringBuffer writer = new StringBuffer();
writer.append("NºPedido");
writer.append(',');
writer.append("Estado");
writer.append(',');
writer.append("Fecha_Pedido");
writer.append(',');
writer.append("Fecha_Inicio");
writer.append(',');
writer.append("Fecha_Final");
writer.append(',');
writer.append("PVP");
writer.append(',');
writer.append("Coste");
writer.append('\n');
for(int i=0;i<pedClientes2.length;i++){
writer.append(pedClientes2[i].getN_pedido());
writer.append(',');
writer.append(pedClientes2[i].getEstado_pedido());
writer.append(',');
writer.append(pedClientes2[i].getF_creacion().getTime().toString());
writer.append(',');
writer.append(pedClientes2[i].getF_inicio_contrato().getTime().toString());
writer.append(',');
writer.append(pedClientes2[i].getF_fin_contrato().getTime().toString());
writer.append(',');
writer.append(pedClientes2[i].getPvp().toString());
writer.append(',');
writer.append(pedClientes2[i].getP_coste().toString());
writer.append('\n');
}
return writer;
}
}
我在做什么坏事?非常感谢