java导出复杂Excel报表求帮助
发布网友
发布时间:2022-04-19 10:50
我来回答
共2个回答
热心网友
时间:2023-07-09 12:00
就是使用poi工具,你自己去下载poi.jar吧。
public class CreateXL
{
public static String xlsFile="test.xls"; //产生的Excel文件的名称
public static void main(String args[])
{
try
{
HSSFWorkbook workbook = new HSSFWorkbook(); //产生工作簿对象
HSSFSheet sheet = workbook.createSheet(); //产生工作表对象
//设置第一个工作表的名称为firstSheet
//为了工作表能支持中文,设置字符编码为UTF_16
workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);
//产生一行
HSSFRow row = sheet.createRow((short)0);
//产生第一个单元格
HSSFCell cell = row.createCell((short) 0);
//设置单元格内容为字符串型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//为了能在单元格中写入中文,设置字符编码为UTF_16。
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//往第一个单元格中写入信息
cell.setCellValue("测试成功");
FileOutputStream fOut = new FileOutputStream(xlsFile);
workbook.write(fOut);
fOut.flush();
fOut.close();
System.out.println("文件生成...");
//以下语句读取生成的Excel文件内容
FileInputStream fIn=new FileInputStream(xlsFile);
HSSFWorkbook readWorkBook= new HSSFWorkbook(fIn);
HSSFSheet readSheet= readWorkBook.getSheet("firstSheet");
HSSFRow readRow =readSheet.getRow(0);
HSSFCell readCell = readRow.getCell((short)0);
System.out.println("第一个单元是:" + readCell.getStringCellValue());
}
catch(Exception e)
{
System.out.println(e);
}
}
}
与数据库结合使用
使用POI,结合JDBC编程技术,我们就可以方便地将数据库中的数据导出生成Excel报表。其关键代码如下:
/*把数据集rs中的数据导出至Excel工作表中。
*传入参数:数据集rs,Excel文件名称xlsName,工作表名称sheetName。
*/
public static void resultSetToExcel(ResultSet rs,String xlsName,String sheetName) throws Exception
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODING_UTF_16);
HSSFRow row= sheet.createRow((short)0);;
HSSFCell cell;
ResultSetMetaData md=rs.getMetaData();
int nColumn=md.getColumnCount();
//写入各个字段的名称
for(int i=1;i<=nColumn;i++)
{
cell = row.createCell((short)(i-1));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(md.getColumnLabel(i));
}
int iRow=1;
//写入各条记录,每条记录对应Excel中的一行
while(rs.next())
{row= sheet.createRow((short)iRow);;
for(int j=1;j<=nColumn;j++)
{
cell = row.createCell((short)(j-1));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(rs.getObject(j).toString());
}
iRow++;
}
FileOutputStream fOut = new FileOutputStream(xlsName);
workbook.write(fOut);
fOut.flush();
fOut.close();
JOptionPane.showMessageDialog(null,"导出数据成功!");
}
热心网友
时间:2023-07-09 12:00
遇到了什么问题?具体描述一下吧
Java百万数据导出Excel性能优化[读(并发)写分离/流式查询]
Java导出百万数据至Excel时,优化性能关键在于读写分离与流式查询。Excel 2007及以上版本最大单Sheet支持1048576行数据,处理百万数据需每百万行创建一个新Sheet。数据通常从数据库中批量获取,一次查询量过大可能导致内存溢出,因此推荐分页查询或流式查询。使用如easyexcel等库可实现分页查询并写入,每百万行...
excel导出百万数据,解决超时和内存溢出的问题
return "XSSFWorkbook:100w条数据写入Excel消耗时间:" + (t2 - t1);} 运行这段代码后,会发现导出过程非常耗时,这显然是因为内存和性能问题导致的。接下来,我们尝试使用SXSSFWorkbook工具进行同样的操作。同样使用传统方式,我们先引入依赖:org.apache.poi、poi-ooxml版本3.17,然后编写代码如下:java ...
Java导入、导出excel保姆级教程(附封装好的工具类)
要实现这个功能,首先需要在项目中引入Apache POI库。在pom.xml中添加相关依赖后,我们开始一步步操作:创建Excel的基本元素,包括WorkBook,然后添加Sheet并设置名称。 接着创建Row和Cell,可以指定单元格的类型,如文本、数字等。 美化导出的Excel,通过创建样式和字体,如设置字体样式、颜色和大小,调整...
JAVA如何实现导出大数量EXCEL报表 数据大概100W条
好像是你的excel文件问题,你另外新建一个,再写点东西在里面试下随便给你一个我以前用过的importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.*;importjava.sql.*;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjxl.*;publicclassSimUpdate{privateStringfileN...
java读取百万级excel数据,求助,各位大佬?
优化1:先查询全部数据,缓存到map中,插入前再进行判断,这样可以显著提高速度。优化2:对于大文件,可以采用异步+多线程读取若干行并分批入库。优化3:对于文件数量过多的情况,可以将每个Excel异步读取与插入,形成双异步操作。通过这些优化,从191秒优化至2秒,效率惊人。以下是关键代码,用于异步读取...
java数据导出excel或其他文件格式,数据量大怎么优化
、测试从数据库读取的耗时,优化SQL。2、改善数据转换导出的算法,更换效率更高的类库。
java大概1000W数据导出成excel有什么好的建议。(最好是插件,POI、JXL...
考虑分批,追加写入的方式,对于简单的字节字符流文件是可取的。然而写成excel这种结构化的文件格式应该是没办法胜任了,追加写入时往往需要事先获知文件的结构信息,然后找到相应的位置进行插入,而这个过程也是复杂的(这也是POI、JXL出现的原因)。因此,建议你输出为多个excel文件吧。PS:不知道这么大的...
java多线程进行大批量excel数据导入实现方案?
方法一:使用JExcel API。此方法直接操作Excel文件,适合数据量不大且对性能要求不高的场景。在多线程导入时,可将数据分类分块,每个线程处理一块数据,提升导入效率。方法二:将Excel数据转换为CSV格式,再导入到目标平台。这种方法相对方法一在性能上有所提升,同时减少了对Java库的依赖。同样在多线程...
我在java后台像要导出个excel表格样式里面的序号是同前台的数据而定的...
你这个不难,从你这个表里面看的貌似你只需要判断,然后动态去填“业务名称”这行的值,表面上看你这情况可以每三行循环,分别获取相对的第一行、第二行、第三行,判断完了之后,再将数据写入到第三行对应的列上,最后再保存就行了。
java中,如何实现将导出的excel导出的数据条数及无法导出数据提示在页面...
将数据表中的数据导出并保存为xls简单,用SSIS或者查询出来之后另存为都可以。但是,这个表中的分类有数百个,如果一个个用SSIS或者查询另存为的话,工作量巨大。前思后想,想到了用while循环查询,并用bcp导出的方法。下面是相关代码:--声明需要的变量 set @sql=@sql+' union all select 列名1,...