在C/S架构中,用java实现下载Excel模板的功能

aCfeng 2011-11-18 06:20:50
遇到一个棘手的问题,在C/S架构中,用java实现下载Excel模板的功能,在网络查的都是jsp的方式,没有找到C/S架构的,我是用swing做的,把Excel放到了一个项目文件夹中,用户下载的时候直接下载到用户选择的路径中,该怎么实现 ,我用这种方式实现的,但是有问题
protected void loadTemplateAction_actionPerformed(ActionEvent e) throws Exception {
JFileChooser chooser = new JFileChooser();
//要想添加默认的文件名,需将setSelectedFile()这个方法放到打开对话框之前
String defaultFileName = "customers.csv";
chooser.setSelectedFile(new File(defaultFileName));

chooser.showSaveDialog(this);

FileInputStream fis = null;
FileOutputStream fos = null;
String sourcefileUrl = "ini/template1/customers.csv";
String outUrl = chooser.getCurrentDirectory().getPath();
File sourceFile = new File(sourcefileUrl);

File targetFile = new File(outUrl);

fis = new FileInputStream(sourceFile);

byte[] b = new byte[(int) sourceFile.length()];
int len = fis.read(b);
while(len>0){
fos = new FileOutputStream(targetFile);
System.out.println("len:"+len);
System.out.println("os:"+fos);
fos.write(b, 0, len);
fos.flush();
}

fis.close();


contentFileNameText.setText("模板下载成功...");
}

请大家帮帮忙,谢谢了
...全文
131 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
aCfeng 2011-11-22
  • 打赏
  • 举报
回复
等了这么久,怎么没有人回答啊? 我自己回答吧 第一种没有解决 我采用的是第二种方式
一、通过文件流的形式。首先FileInputStream读取Excel,然后FileOutputStream写出来,例如:(下面的代码没有实现,存在缺陷)

JFileChooser chooser = new JFileChooser();

//要想添加默认的文件名,需将setSelectedFile()这个方法放到打开对话框之前

String defaultFileName = "customers.csv";

chooser.setSelectedFile(new File(defaultFileName));


chooser.showSaveDialog(this);


FileInputStream fis = null;

FileOutputStream fos = null;

String sourcefileUrl = "ini/template1/customers.csv";

// String outUrl = chooser.getSelectedFile().getPath();



String outUrl = chooser.getCurrentDirectory().getPath();

System.out.println("outUrl:"+outUrl);


File sourceFile = new File(sourcefileUrl);

System.out.println("sourceFile:"+sourceFile);


File targetFile = new File(outUrl);

System.out.println("targetFile:"+targetFile);


fis = new FileInputStream(sourceFile);

System.out.println("fis:"+fis);


byte[] b = new byte[(int) sourceFile.length()];

int len = fis.read(b);

System.out.println("len:"+len);

while(len>0){

fos = new FileOutputStream(targetFile);

System.out.println("len:"+len);

System.out.println("os:"+fos);

fos.write(b, 0, len);

fos.flush();

}


// fos.close();

fis.close();



contentFileNameText.setText("模板下载成功...");


二、新创建一个Excel表格,加上头标题,表面看起来实现了下载的功能,实际是新创建的Excel。

//下载Excel模板,可以通过新创建的模板来实现下载

JFileChooser chooser = new JFileChooser();



String defaultFileName = "customers.csv";

chooser.setSelectedFile(new File(defaultFileName));

chooser.showSaveDialog(this);


File file = chooser.getSelectedFile();



HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet("第一页");


HSSFRow row = sheet.createRow(0);

HSSFCell cell = row.createCell((short) 0);


cell.setCellValue("客户名字");

cell = row.createCell((short) 1);


cell.setCellValue("客户类型");

cell = row.createCell((short) 2);


cell.setCellValue("热点客户");

cell = row.createCell((short) 3);

.

.

.

// ByteArrayOutp;utStream baos = new ByteArrayOutputStream();

FileOutputStream fos = new FileOutputStream(file);



try{

// FileOutputStream fos = new FileOutputStream(file);

workbook.write(fos);



}catch(Exception ex){

ExceptionHandler.handle(ex);

}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧