`
dreamoftch
  • 浏览: 496877 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

导出excel

 
阅读更多
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

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


private void doExport() {
		Object[] options = { "只导出当前页数据", "导出所有数据" };
		Page<WmsWebsiteStockDifference> page = null;
		List<WmsWebsiteStockDifference> wmsWebsiteStockDifferenceList = null;
		StockLocationAction stockLocationAction = null;
		// 导出文件的路径,从对话框里获得后,仅有要保存的文件名,没有.xls的扩展名
		String filePath = null;
		// 用户输入的文件名
		String fileName = null;
		File file = null;
		int odoHeadListSize = 0;
		int checkResult = 0;
		int type = JOptionPane.showOptionDialog(null, "请选择导出数据范围!", "请选择",	JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null,
				options, options[0]);
		if (-1 == type) {
			// 关闭询问对话框时返回
			return;
		}
		// 保存文件对话框
		JFileChooser jfc = new JFileChooser();
		jfc.setFileFilter(new ExcelFilter());
		jfc.setDialogTitle("保存文件");
		jfc.showSaveDialog(XXX);
		if (null == jfc.getSelectedFile()) {
			return;
		} else {
			filePath = jfc.getSelectedFile().getAbsolutePath().substring(0,jfc.getSelectedFile().getAbsolutePath().lastIndexOf(File.separator) + 1);
			fileName = jfc.getSelectedFile().getAbsolutePath().substring(jfc.getSelectedFile().getAbsolutePath().lastIndexOf(File.separator) + 1,
							jfc.getSelectedFile().getAbsolutePath().length());
			checkResult = CheckSameExportName.checkExcelName(filePath+ fileName);
			// 加入对选择文件的判断 
			if (CheckSameExportName.DO_NOTHING == checkResult) {
				return;
			} else if (CheckSameExportName.CHANGE_NAME == checkResult) {
				fileName = fileName.replaceAll(".xls", "").concat("_").concat(CheckSameExportName.getFileNameSuffix());
			}
		}
		try {
			if (0 == type) {
				// 1. 导出当前页,从list界面获取数据
				page = listPanel.getPage();
				if (null == page) {
					JOptionPane.showMessageDialog(null, "没有要导出的数据!");
					return;
				} else {
					wmsWebsiteStockDifferenceList = page.getResult();
					if (null == wmsWebsiteStockDifferenceList|| wmsWebsiteStockDifferenceList.isEmpty()) {
						JOptionPane.showMessageDialog(null, "没有要导出的商品!");
						return;
					} else {
						doExportAction(wmsWebsiteStockDifferenceList, filePath + File.separator + fileName + ".xls");
					}
				}
			} else {
				// 2. 导出所有数据,从库里查
				try {
					// 获取当前查询条件,以便导出。
					ConditionMap condition = new ConditionMap();
					condition.setCondition(listPanel.getConditionMap()
							.getCondition());
					condition.setHql(listPanel.getConditionMap().getHql());
					// 判断当前页面有没有内容
					if (null != listPanel.getPage()) {
						int pageNumber = (int) listPanel.getPage()
								.getTotalCount() / 5000 + 1;
						condition.setPageSize(5000);
						condition.setPageNo(1);
						stockLocationAction = new StockLocationAction();
						Object o = stockLocationAction.getWmsWebsiteStockDifference(condition);
						if (o instanceof Page<?>) {
							page = (Page<WmsWebsiteStockDifference>) o;
							wmsWebsiteStockDifferenceList = page.getResult();
						} else {
							return;
						}
						odoHeadListSize = wmsWebsiteStockDifferenceList.size();
						if (odoHeadListSize < excelPageSize) {
							doExportAction(wmsWebsiteStockDifferenceList, filePath
									+ File.separator + fileName + ".xls");
						} else {
							// 按5k一个excel拆分成若干文件,导出,先创建文件夹,将导出内容全放在文件夹里
							filePath = filePath + "仓库网站库存差" + DateHelper.formatToDay(Calendar.getInstance().getTime()).replaceAll("-", "");
							file = new File(filePath);
							if (!file.exists()) {
								file.mkdirs();
							}
							for (int p = 1; p <= pageNumber; p++) {
								try {
									condition.setPageNo(p);
						 			stockLocationAction = new StockLocationAction();
									o = stockLocationAction.getWmsWebsiteStockDifference(condition);
									if (o instanceof Page<?>) {
										page = (Page<WmsWebsiteStockDifference>) o;
										wmsWebsiteStockDifferenceList = page.getResult();
									} else {
										return;
									}
									if (null == wmsWebsiteStockDifferenceList|| wmsWebsiteStockDifferenceList.isEmpty()) {
										JOptionPane.showMessageDialog(null,"没有要导出的商品!");
										return;
									}

								} catch (Exception e) {
									JExceptionDialog.traceException(XXX,"导出出现异常! cause: " + e.getMessage(),e);
									e.printStackTrace();
									return;
								}
								try {
									doExportAction(
											wmsWebsiteStockDifferenceList,	filePath + File.separator	+ fileName + "_"	+ String.valueOf(p) + ".xls");
								} catch (Exception e) {
									JExceptionDialog.traceException(XXX.getMainFrame(),"导出出现异常! cause: " + e.getMessage(),	e);
									e.printStackTrace();
									return;
								}
							}
						}
					}
				} catch (Exception e) {
					JExceptionDialog.traceException(XXX, "导出出现异常! cause: " + e.getMessage(), e);
					e.printStackTrace();
					return;
				}
			}
		} catch (Exception e) {
			JExceptionDialog.traceException(XXX, "导出出现异常! cause: " + e.getMessage(), e);
			e.printStackTrace();
			return;
		}

	}

	/**
	 * 
	 * Created on 2013-2-17
	 * <p>
	 * Discription:[导出excel]
	 * </p>
	 * 
	 * @author:[田超辉] [tianchaohui]@homevv.com
	 * @update:[日期YYYY-MM-DD] [更改人姓名] void
	 * @param pageContent
	 */
	private void doExportAction(
			List<WmsWebsiteStockDifference> wmsWebsiteStockDifferenceList,
			String fileName) {
		File file = new File(fileName);
		if (listPanel.getPage() != null) {
			HSSFWorkbook hwb = new HSSFWorkbook();
			HSSFCell hc = null;
			HSSFRow hr = null;
			HSSFSheet hs = null;
			FileOutputStream fileOutputStream = null;
			HSSFCellStyle cellStyle = hwb.createCellStyle();
			HSSFFont cellFont = hwb.createFont();
			cellStyle.setFont(cellFont);
			hs = hwb.createSheet();
			hr = hs.createRow((short) 0);
			try {
				fileOutputStream = new FileOutputStream(file);
				hc = hr.createCell(0);
				hc.setCellValue("商品编号");
				hc = hr.createCell(1);
				hc.setCellValue("商品名称");
				hc = hr.createCell(2);
				hc.setCellValue("仓库库存");
				hc = hr.createCell(3);
				hc.setCellValue("仓库库存占用数");
				hc = hr.createCell(4);
				hc.setCellValue("网站库存");
				hc = hr.createCell(5);
				hc.setCellValue("网站库存占用数");
				hc = hr.createCell(6);
				hc.setCellValue("库存差");
				for (WmsWebsiteStockDifference wmsWebsiteStockDifference : wmsWebsiteStockDifferenceList) {
					hr = hs.createRow((hs.getLastRowNum() + 1));
					hc = hr.createCell(0);
					hc.setCellValue((wmsWebsiteStockDifference.getProductNo() != null) ? wmsWebsiteStockDifference	.getProductNo() : "");
					hc = hr.createCell(1);
					hc.setCellValue((wmsWebsiteStockDifference.getProductName() != null && !wmsWebsiteStockDifference.getProductName().equals("null")) ? wmsWebsiteStockDifference
							.getProductName() : "");
					hc = hr.createCell(2);
					hc.setCellValue((wmsWebsiteStockDifference.getWmsStock() != null) ? wmsWebsiteStockDifference.getWmsStock().toString() : "0");
					hc = hr.createCell(3);
					hc.setCellValue((wmsWebsiteStockDifference.getWmsDistrubuteStock() != null) ? wmsWebsiteStockDifference.getWmsDistrubuteStock().toString() : "0");
					hc = hr.createCell(4);
					hc.setCellValue((wmsWebsiteStockDifference.getWebsiteStock() != null) ? wmsWebsiteStockDifference.getWebsiteStock().toString() : "0");
					hc = hr.createCell(5);
					hc.setCellValue((wmsWebsiteStockDifference.getWebSiteDistrubuteStock() != null) ? wmsWebsiteStockDifference.getWebSiteDistrubuteStock().toString() : "0");
					hc = hr.createCell(6);
					hc.setCellValue((wmsWebsiteStockDifference.getWmsWebsiteStockDifference() != null) ? wmsWebsiteStockDifference.getWmsWebsiteStockDifference().toString() : "0");
				}
				hwb.write(fileOutputStream);
				JOptionPane.showMessageDialog(null, "文件导出成功");
				Runtime.getRuntime().exec("cmd /c start \"\" \"" + file + "\"");
			} catch (Exception e) {
				e.printStackTrace();
				JExceptionDialog.traceException(XXX, e.getMessage(), e.getMessage(), e);
			} finally {
				try {
					if (fileOutputStream != null)
						fileOutputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
					JExceptionDialog.traceException(XXX, e.getMessage(), e.getMessage(), e);
				}
			}
		} else {
			JOptionPane.showMessageDialog(null, "没有记录!");
		}
	}

 

分享到:
评论

相关推荐

    使用aspose导出Excel(根据模板导出excel).zip

    在本示例中,我们将深入探讨如何使用Aspose库在.NET环境中根据模板导出Excel电子表格。这个过程涉及到多个步骤和技术,包括理解Aspose的API、模板设计以及数据注入。 首先,Aspose库提供了强大的Excel操作功能,...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

    poi导出根据模板导出excel和简单列表导出excel源码

    在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...

    pb导出excel2007

    "pb导出excel2007"这个主题涉及到的是如何在PowerBuilder中将数据窗口(DataWindow)的内容导出到Excel 2007格式的文件中。在实际开发中,有时我们需要将PB的数据窗口数据导出到Excel以便于分析、处理或分享,而这个...

    Delphi DBGrid导出Excel2010

    Delphi DBGrid 导出 Excel 2010 Delphi DBGrid 是一个强大的数据-grid 控件,经常用于展示大量数据。然而,在实际应用中,我们经常需要将 DBGrid 中的数据导出到其他格式,例如 Excel,以便于数据分析和处理。下面...

    导出Excel功能,导出Excel功能,导出Excel功能

    在IT领域,导出Excel功能是一项非常常见的需求,特别是在数据分析、报表生成以及数据共享等场景中。Excel作为一款强大的电子表格软件,因其易用性、灵活性和强大的计算能力,成为了企业和个人处理数据的首选工具。...

    GridControl通用导出Excel

    ### GridControl通用导出Excel知识点解析 #### 一、GridControl通用导出Excel概述 GridControl是DevExpress提供的一款用于展示和编辑数据的强大组件。在实际应用中,常常需要将GridControl中的数据导出到Excel中,...

    易语言高级表格快速导出EXCEL

    在"易语言高级表格快速导出EXCEL"这个项目中,开发者可能需要实现以下关键技术点: 1. **数据结构与表格对象**:首先,需要在易语言中创建合适的数据结构来存储表格数据,这通常涉及数组或链表等数据类型。同时,...

    jquery 导出excel方法

    下面将详细介绍jQuery导出Excel的方法,以及相关知识点。 1. **jQuery插件:TableExport** 文件`tableExport.jquery.plugin-a891806`可能是一个名为TableExport的jQuery插件,它允许开发者将HTML表格数据导出为...

    ext实现导出excel的功能。

    在EXTJS这个强大的JavaScript框架中,实现导出Excel功能是一项常见的需求。EXTJS提供了一种高效的方法来将数据导出到Excel格式,使得用户能够方便地处理和分析数据。在这个场景下,我们可以从以下几个关键知识点入手...

    C# NPOI 导出Excel

    本资源提供的"004ExportExcelDemo"示例将帮助你了解如何使用NPOI来导出Excel数据。 首先,让我们了解一下NPOI的基本概念。NPOI主要包含两个主要组件:HSSF(Horrible SpreadSheet Format)用于处理旧版的Excel 97-...

    POI导出Excel文件

    这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作Excel数据的有效方式。 首先,让我们详细了解一下Apache POI库。POI提供了一个API,允许开发者在Java应用程序...

    cxGrid带正副标题导出Excel

    在本主题"cxGrid带正副标题导出Excel"中,我们将探讨如何利用cxGrid控件在导出数据到Excel文件时,同时包含主标题(正标题)和副标题(副标题)。 首先,我们需要了解cxGrid的基本结构。cxGrid通常由几个主要部分...

    js导出excel.zip

    在JavaScript编程领域,导出Excel是一项常见的需求,特别是在Web应用中,用户可能需要将数据显示在Excel表格中以便进一步处理或存储。"js导出excel.zip"这个压缩包提供了一个解决方案,它结合了EasyUI和DataGrid组件...

    lodop导出ExcelDemo

    【lodop导出ExcelDemo】是一个基于LODOP技术实现的JavaScript示例,它展示了如何通过LODOP组件将网页中的数据导出为Excel文件。这个功能在许多Web应用程序中非常实用,允许用户方便地保存和处理数据。下面将详细阐述...

    Excel通用导出excel文件

    "Excel通用导出excel文件"这个主题涵盖了如何在不同情况下高效地实现这一目标,不论你是要处理小规模的数据还是大规模的数据集。下面,我们将深入探讨Excel的通用导出功能,以及如何利用它来优化你的工作流程。 ...

    layui数据表格导出Excel插件

    layui数据表格导出Excel插件是一款为layui框架设计的实用工具,它允许用户方便地将layui数据表格中的数据导出到Excel文件中。layui是一款轻量级的前端UI框架,以其简洁、优雅的代码风格和丰富的组件库深受开发者喜爱...

    java导出excel POI jar包

    Java导出Excel是Java开发中常见的需求,尤其是在数据处理和报表生成方面。Apache POI库是Java领域中广泛使用的工具,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本篇文章将深入讲解...

    易语言高级表格导出EXCEL

    在"易语言高级表格导出EXCEL"这个主题中,我们主要关注的是如何使用易语言来操作表格数据,并将这些数据高效地导出到Microsoft Excel格式。易语言提供了丰富的库函数和组件,使得开发者可以方便地实现对表格数据的...

Global site tag (gtag.js) - Google Analytics