精华内容
下载资源
问答
  • 在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的... 呵呵,首先我们来导出EXCEL格式的文件吧。现在主流的操作Ex...

            在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)

             呵呵,首先我们来导出EXCEL格式的文件吧。现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI。这里我们用Apache POI!我们先去Apache的大本营下载POI的jar包:http://poi.apache.org/ ,我这里使用的是3.0.2版本。

            将3个jar包导入到classpath下,什么?忘了怎么导包?不会吧!好,我们来写一个导出Excel的实用类(所谓实用,是指基本不用怎么修改就可以在实际项目中直接使用的!)。我一直强调做类也好,做方法也好,一定要通用性和灵活性强。下面这个类就算基本贯彻了我的这种思想。那么,熟悉许老师风格的人应该知道,这时候该要甩出一长串代码了。没错,大伙请看:

    public class Student {
    	private long id;
    	private String name;
    	private int age;
    	private boolean sex;
    	private Date birthday;
    	// Constructor, Getter and Setter...
    }
    public class Book {
    	private int bookId;
    	private String name;
    	private String author;
    	private float price;
    	private String isbn;
    	private String pubName;
    	private byte[] preface;
    	// Constructor, Getter and Setter...
    }

    上面这两个类一目了然,就是两个简单的javabean风格的类。再看下面真正的重点类:

    public class ExportExcel<T> {
    	public void exportExcel(Collection<T> dataset, OutputStream out) {
    		exportExcel("测试POI导出EXCEL文档", null, dataset, out, "yyyy-MM-dd");
    	}
    
    	public void exportExcel(String[] headers, Collection<T> dataset,
    			OutputStream out) {
    		exportExcel("测试POI导出EXCEL文档", headers, dataset, out, "yyyy-MM-dd");
    	}
    
    	public void exportExcel(String[] headers, Collection<T> dataset,
    			OutputStream out, String pattern) {
    		exportExcel("测试POI导出EXCEL文档", headers, dataset, out, pattern);
    	}
    
    	/**
    	 * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
    	 *
    	 * @param title
    	 *            表格标题名
    	 * @param headers
    	 *            表格属性列名数组
    	 * @param dataset
    	 *            需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的
    	 *            javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据)
    	 * @param out
    	 *            与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
    	 * @param pattern
    	 *            如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
    	 */
    	@SuppressWarnings("unchecked")
    	public void exportExcel(String title, String[] headers,
    			Collection<T> dataset, OutputStream out, String pattern) {
    		// 声明一个工作薄
    		HSSFWorkbook workbook = new HSSFWorkbook();
    		// 生成一个表格
    		HSSFSheet sheet = workbook.createSheet(title);
    		// 设置表格默认列宽度为15个字节
    		sheet.setDefaultColumnWidth((short) 15);
    		// 生成一个样式
    		HSSFCellStyle style = workbook.createCellStyle();
    		// 设置这些样式
    		style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
    		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		// 生成一个字体
    		HSSFFont font = workbook.createFont();
    		font.setColor(HSSFColor.VIOLET.index);
    		font.setFontHeightInPoints((short) 12);
    		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    		// 把字体应用到当前的样式
    		style.setFont(font);
    		// 生成并设置另一个样式
    		HSSFCellStyle style2 = workbook.createCellStyle();
    		style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
    		style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    		style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    		// 生成另一个字体
    		HSSFFont font2 = workbook.createFont();
    		font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
    		// 把字体应用到当前的样式
    		style2.setFont(font2);
    		// 声明一个画图的顶级管理器
    		HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
    		// 定义注释的大小和位置,详见文档
    		HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(
    				0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
    		// 设置注释内容
    		comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
    		// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
    		comment.setAuthor("leno");
    		// 产生表格标题行
    		HSSFRow row = sheet.createRow(0);
    		for (short i = 0; i < headers.length; i++) {
    			HSSFCell cell = row.createCell(i);
    			cell.setCellStyle(style);
    			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
    			cell.setCellValue(text);
    		}
    		// 遍历集合数据,产生数据行
    		Iterator<T> it = dataset.iterator();
    		int index = 0;
    		while (it.hasNext()) {
    			index++;
    			row = sheet.createRow(index);
    			T t = (T) it.next();
    			// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
    			Field[] fields = t.getClass().getDeclaredFields();
    			for (short i = 0; i < fields.length; i++) {
    				HSSFCell cell = row.createCell(i);
    				cell.setCellStyle(style2);
    				Field field = fields[i];
    				String fieldName = field.getName();
    				String getMethodName = "get"
    						+ fieldName.substring(0, 1).toUpperCase()
    						+ fieldName.substring(1);
    				try {
    					Class tCls = t.getClass();
    					Method getMethod = tCls.getMethod(getMethodName,
    							new Class[] {});
    					Object value = getMethod.invoke(t, new Object[] {});
    					// 判断值的类型后进行强制类型转换
    					String textValue = null;
    					// if (value instanceof Integer) {
    					// int intValue = (Integer) value;
    					// cell.setCellValue(intValue);
    					// } else if (value instanceof Float) {
    					// float fValue = (Float) value;
    					// textValue = new HSSFRichTextString(
    					// String.valueOf(fValue));
    					// cell.setCellValue(textValue);
    					// } else if (value instanceof Double) {
    					// double dValue = (Double) value;
    					// textValue = new HSSFRichTextString(
    					// String.valueOf(dValue));
    					// cell.setCellValue(textValue);
    					// } else if (value instanceof Long) {
    					// long longValue = (Long) value;
    					// cell.setCellValue(longValue);
    					// }
    					if (value instanceof Boolean) {
    						boolean bValue = (Boolean) value;
    						textValue = "男";
    						if (!bValue) {
    							textValue = "女";
    						}
    					} else if (value instanceof Date) {
    						Date date = (Date) value;
    						SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    						textValue = sdf.format(date);
    					} else if (value instanceof byte[]) {
    						// 有图片时,设置行高为60px;
    						row.setHeightInPoints(60);
    						// 设置图片所在列宽度为80px,注意这里单位的一个换算
    						sheet.setColumnWidth(i, (short) (35.7 * 80));
    						// sheet.autoSizeColumn(i);
    						byte[] bsValue = (byte[]) value;
    						HSSFClientAnchor anchor = new HSSFClientAnchor(0,
    								0, 1023, 255, (short) 6, index, (short) 6,
    								index);
    						anchor.setAnchorType(2);
    						patriarch.createPicture(anchor, workbook
    								.addPicture(bsValue,
    										HSSFWorkbook.PICTURE_TYPE_JPEG));
    					} else {
    						// 其它数据类型都当作字符串简单处理
    						textValue = value.toString();
    					}
    					// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成
    					if (textValue != null) {
    						Pattern p = Pattern.compile("^//d+(//.//d+)?$");
    						Matcher matcher = p.matcher(textValue);
    						if (matcher.matches()) {
    							// 是数字当作double处理
    							cell.setCellValue(Double.parseDouble(textValue));
    						} else {
    							HSSFRichTextString richString = new HSSFRichTextString(
    									textValue);
    							HSSFFont font3 = workbook.createFont();
    							font3.setColor(HSSFColor.BLUE.index);
    							richString.applyFont(font3);
    							cell.setCellValue(richString);
    						}
    					}
    				} catch (SecurityException e) {
    					e.printStackTrace();
    				} catch (NoSuchMethodException e) {
    					e.printStackTrace();
    				} catch (IllegalArgumentException e) {
    					e.printStackTrace();
    				} catch (IllegalAccessException e) {
    					e.printStackTrace();
    				} catch (InvocationTargetException e) {
    					e.printStackTrace();
    				} finally {
    					// 清理资源
    				}
    			}
    		}
    		try {
    			workbook.write(out);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void main(String[] args) {
    		// 测试学生
    		ExportExcel<Student> ex = new ExportExcel<Student>();
    		String[] headers = { "学号", "姓名", "年龄", "性别", "出生日期" };
    		List<Student> dataset = new ArrayList<Student>();
    		dataset.add(new Student(10000001, "张三", 20, true, new Date()));
    		dataset.add(new Student(20000002, "李四", 24, false, new Date()));
    		dataset.add(new Student(30000003, "王五", 22, true, new Date()));
    		// 测试图书
    		ExportExcel<Book> ex2 = new ExportExcel<Book>();
    		String[] headers2 = { "图书编号", "图书名称", "图书作者", "图书价格", "图书ISBN",
    				"图书出版社", "封面图片" };
    		List<Book> dataset2 = new ArrayList<Book>();
    		try {
    			BufferedInputStream bis = new BufferedInputStream(
    					new FileInputStream("V://book.bmp"));
    			byte[] buf = new byte[bis.available()];
    			while ((bis.read(buf)) != -1) {
    				//
    			}
    			dataset2.add(new Book(1, "jsp", "leno", 300.33f, "1234567",
    					"清华出版社", buf));
    			dataset2.add(new Book(2, "java编程思想", "brucl", 300.33f,
    					"1234567", "阳光出版社", buf));
    			dataset2.add(new Book(3, "DOM艺术", "lenotang", 300.33f,
    					"1234567", "清华出版社", buf));
    			dataset2.add(new Book(4, "c++经典", "leno", 400.33f, "1234567",
    					"清华出版社", buf));
    			dataset2.add(new Book(5, "c#入门", "leno", 300.33f, "1234567",
    					"汤春秀出版社", buf));
    			OutputStream out = new FileOutputStream("E://a.xls");
    			OutputStream out2 = new FileOutputStream("E://b.xls");
    			ex.exportExcel(headers, dataset, out);
    			ex2.exportExcel(headers2, dataset2, out2);
    			out.close();
    			out2.close();
    			JOptionPane.showMessageDialog(null, "导出成功!");
    			System.out.println("excel导出成功!");
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

            写完之后,如果您不是用eclipse工具生成的Servlet,千万别忘了在web.xml上注册这个Servelt。而且同样的,拷贝一张小巧的图书图片命名为book.jpg放置到当前WEB根目录的/WEB-INF/下。部署好web工程,用浏览器访问Servlet看下效果吧!是不是下载成功了。呵呵,您可以将下载到本地的excel报表用打印机打印出来,这样您就大功告成了。完事了我们就思考:我们发现,我们做的方法,不管是本地调用,还是在WEB服务器端用Servlet调用;不管是输出学生列表,还是图书列表信息,代码都几乎一样,而且这些数据我们很容器结合后台的DAO操作数据库动态获取。恩,类和方法的通用性和灵活性开始有点感觉了。好啦,祝您学习愉快!

    Java导出Excel弹出下载框

            将ExportExcel类的main方法改成public void test(),OutputStream out = new FileOutputStream("E://a.xls");这边可以对应Servlet适当改下路径,Servlet代码如下:

    public class ExcelServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		(new ExportExcel()).test();
    		String str = "a.xls";
    		//String path = request.getSession().getServletContext().getRealPath(str);
    		download("E://a.xls", response);
    	}
    	private void download(String path, HttpServletResponse response) {
    		try {
    			// path是指欲下载的文件的路径。
    			File file = new File(path);
    			// 取得文件名。
    			String filename = file.getName();
    			// 以流的形式下载文件。
    			InputStream fis = new BufferedInputStream(new FileInputStream(path));
    			byte[] buffer = new byte[fis.available()];
    			fis.read(buffer);
    			fis.close();
    			// 清空response
    			response.reset();
    			// 设置response的Header
    			response.addHeader("Content-Disposition", "attachment;filename="
    					+ new String(filename.getBytes()));
    			response.addHeader("Content-Length", "" + file.length());
    			OutputStream toClient = new BufferedOutputStream(
    					response.getOutputStream());
    			response.setContentType("application/vnd.ms-excel;charset=gb2312");
    			toClient.write(buffer);
    			toClient.flush();
    			toClient.close();
    		} catch (IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    }

    补充:

    于2014-08-28补充

    今天(20140828)用博文中的代码重新调试了下,献上Java POI 导入导出Excel简单小例子一枚,方便你我。

    源代码下载地址:http://download.csdn.net/detail/evangel_z/7834173

    注:

    1)源代码是不含jar包的,jar包可以去本文补充部分下边的链接中下载,本地测试例子中所使用的所有jar包如下:

    2)直接使用该例子源代码的话,需要在E盘下放置一张名为book的png格式图片(book.png),用于导出含有图片的excel文件(b.xls)。当然,您可以根据实际需要更换代码中的图片路径;

    3)使用本文源代码正常启动服务器后,web页面导出Excel文档具体路径:http://localhost:8080/poi/export

    4)例子代码比较简单,仅供参考……

     

    于2014-12-02补充

    前段时间,在之前代码的基础上,抽空改了改代码,具体如下:

    1)去除图片和Excel文件未找到的bug;

    2)增加代码需要的jar包;

    3)完整代码已放在github上……

    最新代码下载地址:https://github.com/T5750/poi

     

    于2015-01-13补充

    由于不少热心网友问读取Excel模版导出相关问题,故今晚在之前代码的基础上,临时加了些代码,具体如下:

    1)新增使用POI读取Excel模版的例子,模版为poi/WebContent/docs/replaceTemplate.xls;

    2)在poi/src/replace/TestExcelReplace类中,请根据实际情况,调整读取和保存Excel的路径后,直接运行即可;

    最新代码下载地址不变,先到这里,抽空再优化……

     

    于2015-01-24补充

    前段时间,在之前代码的基础上,增加了种读取Excel模版导出的方式。今天,抽空改了改说明,具体如下:

    1)在poi/src/replace包中,新增上次补充里POI读取Excel模版的ReplaceExcelServlet.java,供web页面使用;

    2)在poi/src/template包中,增加了种读取Excel模版导出的方式,其对应的模版为poi/WebContent/docs/template.xls。请根据实际情况,调整读取和保存Excel的路径后,直接运行TestTemplate.java即可。TemplateServlet.java则对应web页面使用;

    最新代码下载地址不变……

     

    于2015-01-31补充

    昨晚,在之前代码的基础上,加上本文中可直接运行导出Excel的代码。具体如下:

    1)在poi/src/testExport包中,TestExportExcel.java,链接地址:https://github.com/T5750/poi/blob/master/src/testExport/TestExportExcel.java

    最新代码下载地址不变……

     

    于2015-02-10补充

    在之前代码的基础上,加上可以通过POI导出Excel2007的例子。具体如下:

    1)在poi/src/testExport包中,TestExportExcel2007.java,链接地址:https://github.com/T5750/poi/blob/master/src/testExport/TestExportExcel2007.java

     

    于2015-02-12补充

    今天,在之前代码的基础上,抽空改了改代码。具体如下:

    1)在poi/src/testExport包中,新增Excel2007Servlet.java。以及,修改相关配置;

    2)在poi/src/testExport包中,对导出Excel文件进行重命名,便于查看;

    3)更新该poi例子对应的帮助文档。

     

    于2019-07-23补充

    Servlet -> Spring Boot

    相关文章&官方文档&源代码下载地址:

    Java POI读取Office Excel (2003,2007)及相关jar包 Spring Boot

    最新官方文档:https://poi.apache.org/apidocs/index.html

    源代码下载地址:http://download.csdn.net/detail/evangel_z/7834173
    最新代码下载地址:https://github.com/T5750/poi

    展开全文
  • js 实现纯前端将数据导出excel两种方式,亲测有效

    万次阅读 多人点赞 2018-05-23 14:33:27
    由于项目需要,需要在不调用后台接口的情况下,将json数据导出excel表格,参考了好多资料以及很多大佬写的博客终于实现,兼容chrome没问题,其他还没有测试过,这边介绍两种实现方式,并附上代码和gif动图,博主...

     

    由于项目需要,需要在不调用后台接口的情况下,将json数据导出到excel表格,参考了好多资料以及很多大佬写的博客终于实现,兼容chrome没问题,其他还没有测试过,这边介绍两种实现方式,并附上代码和gif动图,博主不才还望轻喷,代码可直接copy运行

    如果文章对你有帮助,关注下我的公众号,二维码在下方,这是对我最好的支持,感恩

    方法一

    将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html,代码如下

    <html>
    <head>
        <p style="font-size: 20px;color: red;">使用table标签方式将json导出xls文件</p>
        <button onclick='tableToExcel()'>导出</button>
    </head>
    <body>
        <script>  
        const tableToExcel = () => {
            // 要导出的json数据
            const jsonData = [
                {
                    name:'路人甲',
                    phone:'123456',
                    email:'123@123456.com'
                },
                {
                    name:'炮灰乙',
                    phone:'123456',
                    email:'123@123456.com'
                },
                {
                    name:'土匪丙',
                    phone:'123456',
                    email:'123@123456.com'
                },
                {
                    name:'流氓丁',
                    phone:'123456',
                    email:'123@123456.com'
                },
            ]
            // 列标题
            let str = '<tr><td>姓名</td><td>电话</td><td>邮箱</td></tr>';
            // 循环遍历,每行加入tr标签,每个单元格加td标签
            for(let i = 0 ; i < jsonData.length ; i++ ){
                str+='<tr>';
                for(const key in jsonData[i]){
                    // 增加\t为了不让表格显示科学计数法或者其他格式
                    str+=`<td>${ jsonData[i][key] + '\t'}</td>`;     
                }
                str+='</tr>';
            }
            // Worksheet名
            const worksheet = 'Sheet1'
            const uri = 'data:application/vnd.ms-excel;base64,';
    
            // 下载的表格模板数据
            const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
            xmlns:x="urn:schemas-microsoft-com:office:excel" 
            xmlns="http://www.w3.org/TR/REC-html40">
            <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
            <x:Name>${worksheet}</x:Name>
            <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
            </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
            </head><body><table>${str}</table></body></html>`;
            // 下载模板
            window.location.href = uri + base64(template);
        };
    
        // 输出base64编码
        const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
        </script>
    </body>
    </html>

     

    如图:

     

     

     

     

    方法二

    通过将json遍历进行字符串拼接,将字符串输出到csv文件,代码如下

    <html>
    <head>
        <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p>
        <button onclick='tableToExcel()'>导出</button>
    </head>
    <body>
        <script>
        const tableToExcel = () => {
            // 要导出的json数据
            const jsonData = [
                {
                    name:'路人甲',
                    phone:'123456789',
                    email:'000@123456.com'
                },
                {
                    name:'炮灰乙',
                    phone:'123456789',
                    email:'000@123456.com'
                },
                {
                    name:'土匪丙',
                    phone:'123456789',
                    email:'000@123456.com'
                },
                {
                    name:'流氓丁',
                    phone:'123456789',
                    email:'000@123456.com'
                },
            ];
            // 列标题,逗号隔开,每一个逗号就是隔开一个单元格
            let str = `姓名,电话,邮箱\n`;
            // 增加\t为了不让表格显示科学计数法或者其他格式
            for(let i = 0 ; i < jsonData.length ; i++ ){
                for(const key in jsonData[i]){
                    str+=`${jsonData[i][key] + '\t'},`;     
                }
                str+='\n';
            }
            // encodeURIComponent解决中文乱码
            const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
            // 通过创建a标签实现
            const link = document.createElement("a");
            link.href = uri;
            // 对下载的文件命名
            link.download =  "json数据表.csv";
            link.click();
        }
        </script>
    </body>
    </html>
     

     

     

    如图:

     

     

     

    这里是我创建的一个QQ群,用来给前端萌新解决问题的,有兴趣的可以加一下

    这是我的公众号,可以看更多优质文章哦,公众号刚建不久希望大家多多支持我一下,我也会努力更新更多好文章的 😊

    参考了很多大佬的博客其中这两篇对我启发最大,感谢!


    https://blog.csdn.net/oscar999/article/details/16342699
    https://blog.csdn.net/aa122273328/article/details/50388673

    我的github:https://github.com/hhzzcc

    展开全文
  • Java POI 导入导出Excel简单实例源代码

    千次下载 热门讨论 2014-08-28 16:25:39
    Java POI 导入导出Excel简单实例源代码 该源代码的jar包,参见以下博文附录截图 Java POI导出EXCEL经典实现 Java导出Excel弹出下载框 http://blog.csdn.net/evangel_z/article/details/7332535 web页面导出Excel...
  • C# 使用 C# Aspose.Cells导出多个Sheet的Excel .net导出Excel C#导出Excel
      在我博客  资源里面可以免费下载绿色版的Aspose.cells  插件  破解的 
    
    
    
     public static void MydataTest()
            {
                //打开保存的位置
                FolderBrowserDialog BrowDialog = new FolderBrowserDialog();
                BrowDialog.ShowNewFolderButton = true;
                BrowDialog.Description = "请选择Excel保存位置";
                if (BrowDialog.ShowDialog() == DialogResult.OK)
                {
    
                    try
                    {
                        string MYpath = BrowDialog.SelectedPath;
                        Workbook workbook = new Workbook();
                        //清除页先 要不然 新建就有一个sheet
                        workbook.Worksheets.Clear();
                        #region   样式 
                        //为标题设置样式    
                        Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
                        styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
                        styleTitle.Font.Name = "宋体";//文字字体
                        styleTitle.Font.Size = 18;//文字大小
                        styleTitle.Font.IsBold = true;//粗体 
                        //样式2
                        Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
                        style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
                        style2.Font.Name = "宋体";
                        style2.Font.Size = 14;
                        style2.Font.IsBold = true;
                        style2.IsTextWrapped = true;//单元格内容自动换行
                        style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
                        style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
                        style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
                        style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
    
                        //样式3
                        Style style3 = workbook.Styles[workbook.Styles.Add()];
                        style3.HorizontalAlignment = TextAlignmentType.Center;
    
                        style3.Font.Name = "宋体";
                        style3.Font.Size = 12;
                        style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
                        style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
                        style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
                        style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
    
                        #endregion
                        //中文列名
                        DataTable tblDatas = new DataTable();
                        tblDatas.Columns.Add("Name", Type.GetType("System.String"));  
                        tblDatas.Rows.Add(new object[] { "购买日期" });
                        tblDatas.Rows.Add(new object[] { "质保时间" });
                        tblDatas.Rows.Add(new object[] { "报废日期" });
                        tblDatas.Rows.Add(new object[] { "厂家" });
                        tblDatas.Rows.Add(new object[] { "厂家联系人" });
                        tblDatas.Rows.Add(new object[] { "厂家联系电话" });
                        tblDatas.Rows.Add(new object[] { "备注" });
                        //保存的路径
                        string path = System.IO.Path.Combine(MYpath, "资产报表" + DateTime.Now.ToString("yyyy-MM-dd").Trim() + ".xls");
                       //我的数据 就是Sheet名字
                      DataTable AssetModelName ="你的Sheet名字";
                         //生成sheet的名字
                        for (int i = 0; i < AssetModelName.Rows.Count; i++)
                        {
                            workbook.Worksheets.Add("页" + (i + 1).ToString() + "-" + AssetModelName.Rows[i]["AssetModelName"].ToString().Trim());
                        }
                         //有多少sheet  就遍历多少次
                       for (int j = 0; j < AssetModelName.Rows.Count; j++)
                        {
                          //dt 就是你每个sheet的数据
                          DataTable dt = //使用DataTable对象  去查询你表格的数据
                            Worksheet sheet0 = workbook.Worksheets[j];
                            Cells cells = sheet0.Cells;//单元格
                            if (dt != null)
                            {
                                int Colnum = dt.Columns.Count;//表格列数
                                int Rownum = dt.Rows.Count;//表格行数  
                                cells.Merge(0, 0, 1, Colnum);//合并单元格//生成行1 标题行 
                                cells[0, 0].PutValue(AssetModelName.Rows[j]["AssetModelName"].ToString().Trim());//填写内容
                                cells[0, 0].SetStyle(styleTitle);
                                cells.SetRowHeight(0, 38);
    
                               //生成行2 列名行   就是
                                for (int i = 0; i < Colnum; i++)
                                {
                                    cells[1, i].PutValue(tblDatas.Rows[i]["Name"]);
                                    cells[1, i].SetStyle(style2);
                                }
                                cells.SetRowHeight(1, 30);//设置第一行行高
    
                                //设置列宽
                                cells.SetColumnWidth(0, 22);  
                                cells.SetColumnWidth(14, 22); 
                                //生成数据行
                                for (int i = 0; i < Rownum; i++)
                                {
                                    for (int k = 0; k < Colnum; k++)
                                    {
                                        cells[2 + i, k].PutValue(dt.Rows[i][k].ToString());
                                        cells[2 + i, k].SetStyle(style3);
                                    }
                                    cells.SetRowHeight(2 + i, 17);
                                }
                            }
                        }
                        workbook.Save(path);
                        Process.Start(path);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                } 
            }




    使用 Aspose.Cells导出多个Sheet的Excel

    在我博客  资源里面可以免费下载绿色版的Aspose.cells  插件  破解的

    使用 Aspose.Cells导出多个Sheet的Excel

    在我博客  资源里面可以免费下载绿色版的Aspose.cells  插件  破解的

    展开全文
  • js导出EXCEL js导出EXCEL

    万次阅读 2012-09-19 15:03:38
    参考一:... 参考二: js导出EXCEL js导出EXCEL //导出excel function exportExcel(DivID){ //先声明Excel插件、Excel工作簿等对像 var jXls, myWorkbook, myWorksheet;

    参考一:http://wenku.baidu.com/view/7b81f3eb6294dd88d0d26b57.html

    参考二:

    js导出EXCEL js导出EXCEL

    <html>
    <body>
    <script language="javascript">
    //导出excel
    function exportExcel(DivID){

    //先声明Excel插件、Excel工作簿等对像
    var jXls, myWorkbook, myWorksheet;

    try {
    //插件初始化失败时作出提示
    jXls = new ActiveXObject('Excel.Application');
    }catch (e) {
    alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
    return false;
    }

    //不显示警告
    jXls.DisplayAlerts = false;

    //创建AX对象excel
    myWorkbook = jXls.Workbooks.Add();
    //myWorkbook.Worksheets(3).Delete();//删除第3个标签页(可不做)
    //myWorkbook.Worksheets(2).Delete();//删除第2个标签页(可不做)

    //获取DOM对像
    var curTb = document.getElementByIdx_x(DivID);

    //获取当前活动的工作薄(即第一个)
    myWorksheet = myWorkbook.ActiveSheet;

    //设置工作薄名称
    myWorksheet.name="NP统计";

    //获取BODY文本范围
    var sel = document.body.createTextRange();

    //将文本范围移动至DIV处
    sel.moveToElementText(curTb);

    //选中Range
    sel.select();

    //清空剪贴板
    window.clipboardData.setData('text','');

    //将文本范围的内容拷贝至剪贴板
    sel.execCommand("Copy");

    //将内容粘贴至工作簿
    myWorksheet.Paste();

    //打开工作簿
    jXls.Visible = true;

    //清空剪贴板
    window.clipboardData.setData('text','');
    jXls = null;//释放对像
    myWorkbook = null;//释放对像
    myWorksheet = null;//释放对像
    }

    </script>
    <input type="button" onClick="exportExcel('tabEnterNpDiv')" value="导出表格">
    fgsghsh
    <table width="200" border="1">
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    <div></div>
    <div id="tabEnterNpDiv">
    <table border="1" style="display:block">
    <tr bgcolor="tomato">
    <td align="middle">省份</td>
    <td id = "province" colspan="2" align="middle">天津</td>
    <td colspan="4" align="middle">携入</td>
    </tr>
    <tr bgcolor="turquoise">
    <td rowspan="2" align="middle">时间</td>
    <td align="middle">开始时间</td>
    <td align="middle">结束时间</td>
    <td align="middle">电信</td>
    <td align="middle">移动</td>
    <td align="middle">联通</td>
    <td align="middle">携出合计</td>
    </tr>
    <tr bgcolor="mistyrose">
    <td id = "sDate" align="middle">2010-10-17</td>
    <td id = "eDate" align="middle">2010-11-17</td>
    <td align="middle">成功量</td>
    <td align="middle">成功量</td>
    <td align="middle">成功量</td>
    <td align="middle">成功量</td>
    </tr>
    <tr bgcolor="loralwhite">
    <td rowspan="4" align="middle">携出</td>
    <td colspan="2" align="middle">电信</td>
    <td align="middle">--</td>
    <td id = "s001002" align="middle">500</td>
    <td id = "s001003" align="middle">700</td>
    <td id = "out001" align="middle">1200</td>
    </tr>
    <tr bgcolor="indigo">
    <td colspan="2" align="middle">移动</td>
    <td id = "s002001" align="middle">3000</td>
    <td align="middle">--</td>
    <td id = "s002003" align="middle">2500</td>
    <td id = "out002" align="middle">5500</td>
    </tr>
    <tr bgcolor="Gray">
    <td colspan="2" align="middle">联通</td>
    <td id = "s003001" align="middle">3000</td>
    <td id = "s003002" align="middle">500</td>
    <td align="middle">--</td>
    <td id = "out003" align="middle">3500</td>
    </tr>
    <tr bgcolor="tan">
    <td colspan="2" align="middle">携入合计</td>
    <td id = "in001" align="middle">6000</td>
    <td id = "in002" align="middle">1000</td>
    <td id = "in003" align="middle">3200</td>
    <td id = "inout" align="middle">10200</td>
    </tr>
    </table>
    </div>
    <div></div><table width="200" border="1">
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>

    </body>
    </html>

    http://blog.sina.com.cn/s/blog_531308390100vboj.html

    展开全文
  • winform 导出 Excel

    千次阅读 热门讨论 2019-03-01 14:51:16
    本篇博客将介绍「winform 导出 Excel」或「~~VS2017 导出 Excel~~ 」又或「C# 导出 Excel」又或「.Net 导出 Excel」的常用的两种方式以及简单分享其他方式(能力原因,已经尽力,用词还是可能不当)。
  • 前面我们介绍了 SpringBoot 中使用 JeecgBoot 的 Autopoi 导出 Excel,其实 Autopoi 的底层也是 EasyPoi,对于 Excel 的导入/导出也是非常方便的。那 EasyPoi 也是基于 POI 的,如果对这方面想要深究的,可以先看看...
  • java poi导出Excel表格超大数据量解决方案

    万次阅读 多人点赞 2016-07-02 10:59:43
    Java实现导出excel表格功能,大部分都会使用apache poi, apache poi API 地址
  • Easypoi模版导出excel

    万次阅读 热门讨论 2017-10-20 09:54:07
    若您正在使用easypoi进行excel导出的话,希望这篇文章能帮到您。 该文章是使用easypoi得模版方式实现excel导出(目前是单sheet的导出), 若需要使用非模版形式导出多sheet得话,可以...模版形式导出Excel(多Shee...
  • easyExcel导出excel

    千次阅读 2019-06-03 17:27:54
    /** * 导出EXCEL * * @throws FileNotFoundException */ @RequestMapping("/excel") public void excel(HttpServletRequest request, HttpServletResponse response) throws Exception { ...
  • SpringBoot使用Easypoi导出excel示例

    万次阅读 2018-12-05 20:08:47
    前面博主介绍了如何通过JXLS模板导出excel,如何通过POI直接导出excel;这里再介绍一种导出excel的方式:使用JueYue封装的工具类---Easypoi导出excel。 软硬件环境:Windows10、IntelliJ IDEA、SpringBoot 2.1.1....
  • freemarker导出excel

    千次阅读 2018-09-02 12:50:44
    导出excel有多种方式,我用的是freemarker和jxl导出excel,各有各的优缺点。 本篇讲的是用freemarker导出excel 众所周知freemarker是采用模板导出的方法,通用性比较高,但是由于它是用xml模板生成的,打开时会...
  • easyPoi导出excel导出错误

    千次阅读 2019-11-22 14:46:33
    easyPoi导出excel导出错误解决方案 最近项目中忽然出现excel不能导出的错误,以前测试是好用的,跟代码发现是在默认样式时报控制针问题,此问题为poi依赖缺少或者easypoi版本太低导致,项目中使用的为3.0.1版本,又...
  • 代码:(设置Excel 导出Excel 样式的颜色 ) 提示:像 cellStyle, font 等对象只要创建一次就可以了,并不需要每个单元格去创建一个对象,否则话会样式太多,Excel 会报错。 因此我想到了用 HashMap 保存...
  • java 根据excel模板导出excel

    千次阅读 2019-09-12 16:43:20
    java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</...
  • 说到导出 Excel,我们首先会想到 poi、jsxl 等,使用这些工具会显得笨重,学习难度大。今天学习使用 JeecgBoot 中的 Autopoi 导出 Excel,底层基于 easypoi,使用简单,还支持数据字典方式 一、开发前戏 1、引入 ...
  • Easypoi模版形式导出excel导出图片

    千次阅读 2019-02-26 16:19:43
    若您正在使用easypoi进行excel导出的话,希望这篇文章能帮...非模版形式导出Excel(多Sheet)。 模版形式的多sheet导出可参考:EasyPOI-&gt;模版形式导出Excel(多Sheet) 模版导出可参考我的文章Easypoi导出e...
  • js导出excel插件

    热门讨论 2013-07-26 08:58:32
    js导出excel插件,需要配置为网站
  • Java 导出Excel利用模版导出

    万次阅读 2018-07-31 15:09:08
    Java导出Excel和word的方式大体相同 1、Excel模版导出到页面下载 首先,导入依赖在pom.xml中我选择的事1.03的版本  第二、在项目或是自己需要的地方建立个文件夹放导出文件的模版,并且配好模版    第三...
  • js导出excel文件

    千次阅读 2019-06-26 16:48:26
    js导出excel文件 这里介绍一种前端导出excel表格的方法,感觉非常简单实用,直接贴代码。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导出excel实例&...
  • 使用PhpSpreadsheet导入&amp;amp;导出Excel,通用方法。适用各种Excel操作场景!
  • Java中使用poi导入、导出Excel

    万次阅读 多人点赞 2017-10-08 15:52:13
    一、介绍   当前B/S模式已成为应用开发的主流,而在...这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。  目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和JavaExcel ...
  • jeecg导出excel设置样式

    千次阅读 2019-06-19 11:39:27
    jeecg导出excel设置样式jeecg导出excel设置样式 jeecg导出excel设置样式 今天工作中遇到个问题,在使用jeecg框架的时候使用自动生成代码导出excel文档,需要给添加序号和边框。 首先来看一下自动生成的导出代码 /** ...
  • jQuery table2excel 导出Excel

    千次阅读 2017-07-03 11:10:23
    导出Excel的功能非常常见,除了可以在后端导出外(代价大),也可以在浏览器前端导出(多表头、单元格合并都支持)。只需要引入jQuery的table2excel.js ,即可非常方便的导出excel。 下载地址:jQuery Plugin to ...
  • nodejs导出Excel文档

    千次阅读 2018-09-29 17:42:18
    node中导出Excel文档。 安装excel-export node中导出excel的模板有很多,这里我使用的是excel-export来进行的导出功能的实现。 新建一个node项目之后,在目录中找到package.json文件件,在dependencies:{}中添加 ...
  • angularjs导出Excel

    千次阅读 2018-03-15 13:41:23
    angularjs 1.x导出Excel方法,常用的有2种1. 直接导出table为xlsservice中加入homeServiceMoudule.factory('Excel',['$window', '$sce','ConfigService', '$localStorage',function($window, $sce, ConfigService,$...
  • 使用excelutils导出excel

    千次阅读 2017-11-21 19:16:20
    使用excelutils导出excel非常简单,这里不做很多的介绍,直接贴出代码: 所需要的包有commons-beanutils-1.8.0.jar,commons-digester-1.8.jar,commons-logging-1.1.1.jar,excelutils.jar,poi-3.8-20120326.jar,...
  • EasyPOI->模版形式导出Excel(多Sheet)

    万次阅读 热门讨论 2019-02-27 14:03:18
    在使用EasyPOI进行模版导出时,通常导出得都是单Sheet得Excel,代码可参考我的文章Easypoi导出excel 非模版形式导出excel可参考我的文章:EasyPOI->非模版形式导出Excel(多Sheet) 如需要导出图片到excel可...
  • miniUI实现导出Excel

    千次阅读 2019-10-21 16:50:50
    miniUI实现导出Excel 前端页面 <td><a id="exportBtn" class="mini-button org">已缴费导出</a></td> <!--导出Excel相关HTML--> <form id="excelForm" action="/archives/...
  • postman测试导出Excel接口

    千次阅读 2019-12-11 10:15:56
    最近有导出Excel的接口要测试,而且项目加了权限不方便在浏览器直接测试后端接口,于是在postman上测试导出Excel方法,直接点击Send按钮会生成一堆乱码: 后来折腾了一会,发现Send按钮还有一个下拉选项Send ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,877
精华内容 26,350
关键字:

导出excel