求excel上传到服务器的java代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求excel上传到服务器的java代码相关的知识,希望对你有一定的参考价值。

第一是文件上传,可以参照Jakarta的FileUpload组件,其实也不一定要用这个,用普通的Post也就行了。
第二是Excel解析,用JSL或者POI都行
第三是数据保存,这个应该简单吧,一个循环,一行对应一条数据,写好了方法循环赋值调用就行了。
第四是查询和显示,这个更简单了,不用多说。

你自己试试吧
参考技术A 如果只是上传保存的话,只需要搞懂一句话就好了,
把servletinputstream变为fileinputstream
然后就是流的转换了,至于后期是要保存文件还是修改文件,那就随你意了
当然,这只是我的一种思路,实践过……

楼上的前辈,方法也不错
参考技术B 你要怎么上传,是通过jsp页面上传还是后台上传?追问

后台

追答

所以你只是需要一个java程序把本地的文件传送到远端的服务器?

什么服务器? FTP ?

追问

追答

import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileOutputStream;

public class FtpUpload
public static void main(String[] args)
testUpload();


/**
* FTP上传
*/
public static void testUpload()
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;

try
ftpClient.connect("ftp_address");
ftpClient.login("userName", "password");

File srcFile = new File("C:\\new.gif");
fis = new FileInputStream(srcFile);
//设置上传目录
ftpClient.changeWorkingDirectory("/admin/pic");
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile("3.gif", fis);
catch (IOException e)
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
finally
IOUtils.closeQuietly(fis);
try
ftpClient.disconnect();
catch (IOException e)
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);




追问

用smartUpload 该怎么写呢

追答

SmartUpload 是JSP上传组件,不是FTP上传

你到目前为止好像不知道你的问题到底是什么

追问

我就是想往服务器上上传一个excel文件啊 只是保存文件

java如何导出excel表格,如果用poi,java代码如何实现.,求代码!!!

参考技术A 项目结构:

xls:

\\\

XlsMain .java 类
//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)

*

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
*
* @author Hongten</br>
*
* 参考地址:http://hao0610.iteye.com/blog/1160678
*
*/
public class XlsMain

public static void main(String[] args) throws IOException
XlsMain xlsMain = new XlsMain();
XlsDto xls = null;
List<XlsDto> list = xlsMain.readXls();

try
XlsDto2Excel.xlsDto2Excel(list);
catch (Exception e)
e.printStackTrace();

for (int i = 0; i < list.size(); i++)
xls = (XlsDto) list.get(i);
System.out.println(xls.getXh() + " " + xls.getXm() + " "
+ xls.getYxsmc() + " " + xls.getKcm() + " "
+ xls.getCj());




/**
* 读取xls文件内容
*
* @return List<XlsDto>对象
* @throws IOException
* 输入/输出(i/o)异常
*/
private List<XlsDto> readXls() throws IOException
InputStream is = new FileInputStream("pldrxkxxmb.xls");
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
XlsDto xlsDto = null;
List<XlsDto> list = new ArrayList<XlsDto>();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++)
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null)
continue;

// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++)
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow == null)
continue;

xlsDto = new XlsDto();
// 循环列Cell
// 0学号 1姓名 2学院 3课程名 4 成绩
// for (int cellNum = 0; cellNum <=4; cellNum++)
HSSFCell xh = hssfRow.getCell(0);
if (xh == null)
continue;

xlsDto.setXh(getValue(xh));
HSSFCell xm = hssfRow.getCell(1);
if (xm == null)
continue;

xlsDto.setXm(getValue(xm));
HSSFCell yxsmc = hssfRow.getCell(2);
if (yxsmc == null)
continue;

xlsDto.setYxsmc(getValue(yxsmc));
HSSFCell kcm = hssfRow.getCell(3);
if (kcm == null)
continue;

xlsDto.setKcm(getValue(kcm));
HSSFCell cj = hssfRow.getCell(4);
if (cj == null)
continue;

xlsDto.setCj(Float.parseFloat(getValue(cj)));
list.add(xlsDto);


return list;


/**
* 得到Excel表中的值
*
* @param hssfCell
* Excel中的每一个格子
* @return Excel中每一个格子中的值
*/
@SuppressWarnings("static-access")
private String getValue(HSSFCell hssfCell)
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN)
// 返回布尔类型的值
return String.valueOf(hssfCell.getBooleanCellValue());
else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC)
// 返回数值类型的值
return String.valueOf(hssfCell.getNumericCellValue());
else
// 返回字符串类型的值
return String.valueOf(hssfCell.getStringCellValue());





XlsDto2Excel.java类
//该类主要负责向Excel(2003版)中插入数据

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class XlsDto2Excel

/**
*
* @param xls
* XlsDto实体类的一个对象
* @throws Exception
* 在导入Excel的过程中抛出异常
*/
public static void xlsDto2Excel(List<XlsDto> xls) throws Exception
// 获取总列数
int CountColumnNum = xls.size();
// 创建Excel文档
HSSFWorkbook hwb = new HSSFWorkbook();
XlsDto xlsDto = null;
// sheet 对应一个工作页
HSSFSheet sheet = hwb.createSheet("pldrxkxxmb");
HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
String[] names = new String[CountColumnNum];
names[0] = "学号";
names[1] = "姓名";
names[2] = "学院";
names[3] = "课程名";
names[4] = "成绩";
for (int j = 0; j < CountColumnNum; j++)
firstcell[j] = firstrow.createCell(j);
firstcell[j].setCellValue(new HSSFRichTextString(names[j]));

for (int i = 0; i < xls.size(); i++)
// 创建一行
HSSFRow row = sheet.createRow(i + 1);
// 得到要插入的每一条记录
xlsDto = xls.get(i);
for (int colu = 0; colu <= 4; colu++)
// 在一行内循环
HSSFCell xh = row.createCell(0);
xh.setCellValue(xlsDto.getXh());
HSSFCell xm = row.createCell(1);
xm.setCellValue(xlsDto.getXm());
HSSFCell yxsmc = row.createCell(2);
yxsmc.setCellValue(xlsDto.getYxsmc());
HSSFCell kcm = row.createCell(3);
kcm.setCellValue(xlsDto.getKcm());
HSSFCell cj = row.createCell(4);
cj.setCellValue(xlsDto.getCj());
(xlsDto.getMessage());


// 创建文件输出流,准备输出电子表格
OutputStream out = new FileOutputStream("POI2Excel/pldrxkxxmb.xls");
hwb.write(out);
out.close();
System.out.println("数据库导出成功");




XlsDto .java类
//该类是一个实体类

public class XlsDto
/**
* 选课号
*/
private Integer xkh;
/**
* 学号
*/
private String xh;
/**
* 姓名
*/
private String xm;
/**
* 学院
*/
private String yxsmc;
/**
* 课程号
*/
private Integer kch;
/**
* 课程名
*/
private String kcm;
/**
* 成绩
*/
private float cj;
public Integer getXkh()
return xkh;

public void setXkh(Integer xkh)
this.xkh = xkh;

public String getXh()
return xh;

public void setXh(String xh)
this.xh = xh;

public String getXm()
return xm;

public void setXm(String xm)
this.xm = xm;

public String getYxsmc()
return yxsmc;

public void setYxsmc(String yxsmc)
this.yxsmc = yxsmc;

public Integer getKch()
return kch;

public void setKch(Integer kch)
this.kch = kch;

public String getKcm()
return kcm;

public void setKcm(String kcm)
this.kcm = kcm;

public float getCj()
return cj;

public void setCj(float cj)
this.cj = cj;




后台输出:
数据库导出成功
1.0 hongten 信息技术学院 计算机网络应用基础 80.0
2.0 王五 信息技术学院 计算机网络应用基础 81.0
3.0 李胜基 信息技术学院 计算机网络应用基础 82.0
4.0 五班古 信息技术学院 计算机网络应用基础 83.0
5.0 蔡诗芸 信息技术学院 计算机网络应用基础 84.0本回答被提问者和网友采纳

以上是关于求excel上传到服务器的java代码的主要内容,如果未能解决你的问题,请参考以下文章

java 导出excel 关于导出路径的配置 求解答 求配置文件的例子

把excel导入服务器后台页面显示,java怎么写啊,求答案,最后的效果是下图这样。

jsp 接收用户上传的excel,先对excle的数据进行筛选,再发到控制端该怎么做,求指导

java spring MVC 用poi做Excel导入碰到一个问题,求大神指教,有关下拉框的问题

为啥在本地可以导出Excel表,但是一上传服务器就不行了,导出的表里没有数据 求解答

java怎么把excel文件导入到web网页上显示