java使用什么技术实现excel数据的批量导入导出

作者&投稿:针柔 (若有异议请与网页底部的电邮联系)
java利用poi技术导入批量excel数据,并且分段存入数据库怎么解决~

注意引入的都是poi的包,使用Cell,excel2003的.xls对应是HSSFCell,而之后的xlsx对应的则是XSSFCell,但是他们都继承于Cell,所以使用Cell就可以使用两种格式的excel导入了,下面解决excel中数据的各种格式
[java] view plaincopy
//读取excel
try {
request.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gbk");
// 1. 创建工厂类
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2. 创建FileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);

// 3. 判断是否是上传表单
// boolean b = upload.isMultipartContent(request);
// 设置上传文件最大值
upload.setSizeMax(25 * 1024 * 1024);
// 是文件上传表单
// 4. 解析request,获得FileItem项
List fileitems = upload.parseRequest(request);
// 5. 遍历集合
for (FileItem item : fileitems) {
// 判断是不是普通字段
if (!item.isFormField()) {
// 获得流,读取数据写入文件
InputStream in = item.getInputStream();
Workbook book = createWorkBook(in,item.getName());
// 获得第一个工作表对象
Sheet sheet = book.getSheetAt(0);
if(0==sheet.getLastRowNum()){
//如果没有数据
request.setAttribute("message", "excel的sheet0中不存在数据");
request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
}

// 第一行为标题,从第二行开始录入
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
//标题行,用来对比方便得到数据
Row titleRow = sheet.getRow(0);
//数据行
Row row = sheet.getRow(i);
//获得值
String value_temp= this.getValue((Cell) row.getCell(2));
}
}
}

} catch (Exception e) {
e.printStackTrace();
message="导入失败"+message;
request.setAttribute("message",message);
request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

导入的时候 使用最新版本的jxl
wbSetting.setUseTemporaryFileDuringWrite(true);
wbSetting.setTemporaryFileDuringWriteDirectory(new File(excelPath));//临时文件夹的位置
导出的时候对将读取的LIST分割,每50000条数据生成一个EXCEL的sheet(一个sheet最多能存储60000多行数据),再写入,写入的时候,如果设置了采用临时文件写入的话,jxl会自动采用生成临时文件的方式写入EXCEL

java使用第三方工具包POI技术实现excel数据的批量导入导出。

举例如下:

1、下载apache的相关jar包。poi-ooxml-3.6.jar xmlbeans-2.3.0.jar等,如图:

2、编写相关的读写类

    /**

     * 读取xls文件内容

     */

    private
List<XlsDto> readXls() throws
IOException {

        InputStream is = new
FileInputStream("test.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;

    } 

3、导出就是输入到一个新的excel文件里面

public void writeXls(List<Student> list, String path) throws Exception {

    if (list == null) {原始数据为空,直接返回

        return;

    }

    int countColumnNum = list.size();//设置列数

    HSSFWorkbook book = new HSSFWorkbook(); //创建工作表对象

    HSSFSheet sheet = book.createSheet("studentSheet");

    // 创建第一行

    HSSFRow firstRow = sheet.createRow(0);

    HSSFCell[] firstCells = new HSSFCell[countColumnNum];

    //创建表头

    String[] options = { "no", "name", "age", "score" };

   //循环数据域

    for (int j = 0; j < options.length; j++) {

        firstCells[j] = firstRow.createCell(j);

        firstCells[j].setCellValue(new HSSFRichTextString(options[j]));

    }

    //处理每一个cell的值

    for (int i = 0; i < countColumnNum; i++) {

        HSSFRow row = sheet.createRow(i + 1);

        Student student = list.get(i);

        for (int column = 0; column < options.length; column++) {

            HSSFCell no = row.createCell(0);

            HSSFCell name = row.createCell(1);

            HSSFCell age = row.createCell(2);

            HSSFCell score = row.createCell(3);

            no.setCellValue(student.getNo());

            name.setCellValue(student.getName());

            age.setCellValue(student.getAge());

            score.setCellValue(student.getScore());

        }

    }

    File file = new File(path);

    OutputStream os = new FileOutputStream(file);

    System.out.println(Common.WRITE_DATA + path);

    book.write(os);

    os.close();

}




ava是什么意思
ava是英文单词,是“AutomaticVoiceActivation”的缩写,中文意思是自动语音激活。它是一种用于检测和识别语音信号的技术,可以让用户通过语音来控制设备。ava的应用 ava技术可以应用于各种设备,比如智能手机、家用电器、汽车、安防系统等等。它可以帮助用户更加方便快捷地操作设备,帮助设备更加聪明地响应用户的...

ava v是什么意思?
AVA是英文Adaptive Video Acceleration的缩写,即自适应视频加速技术。它是一种针对有线或无线网络环境下,提升视频播放质量和缓冲稳定性的技术。AVA通过自动调整视频码率,以适应当前的网络状况,从而实现更可靠的视频播放。AVA V的工作原理是先对网络进行评估,再根据网络的实际状况动态地调节视频流的码率。...

ava的大方向是什么
ava的大方向就是j2eej2ee不仅仅是socket编程,具体包括13中核心技术J2EE的核心API与组J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):方法\/步骤 1.JDBC(JavaDat...

ava头盔有假货吗
AVA采用的是韩国LG‘ABS复材’国内率先使用配备了瑞典MIPS防护的摩托车头盔(MIPS来自瑞典,全球顶级头盔安全防护技术,有效降低脑震荡风险)日本Technora_芳纶纤维壳体材质(这种材质一般用于防弹领域)美国CoolMax_内衬材质荷兰Pinlock_防雾镜片,黑科技满满。

超声AVA是什么意思?
超声AVA是一种医学检查手段,它通过超声波检测人体内脏器官的血管流量和速度,并计算出血管断面积,从而准确地评估器官的血流量。这项技术主要用于评估心脏和血管病变以及肝脏、肾脏等器官的功能状态,对疾病的早期诊断和治疗非常有帮助。超声AVA的检查方法有哪些?超声AVA的检查方法主要有两种,一种是经食道...

腾讯游戏中那个AVA是什么游戏啊
《AVA》是一款激烈对抗的网络枪战游戏,具备极其出色的画面效果,它使用先进的虚幻3引擎,革命性的Next-Generation On-Line FPS系统,真正符合了次世代的美术品质,它使用HDR,Radiocity等次世代rendering技术,完整再现了具有实感的战斗和栩栩如生的真实的枪支;在地图处理上使用物理引擎的可被破坏的背景对象...

ava闪电是什么意思?
AVA闪电是指在区块链网络中的快速交易确认网络。这使得用户可以在以太坊网络中以更快的速度完成交易,并且提供更安全的交易确认。AVA闪电网络采用独特的共识机制并结合了高效的节点选择方法,使得该网络具有出色的性能和去中心化特征。虽然AVA闪电是一种新的技术,但是它正在逐步被越来越多的人所认可和采用...

“AVA”指代的是什么?
“Active Vision Agent”作为一个缩写,主要应用于视觉处理、机器人技术或者人工智能的视觉导航等领域。例如,它可能用于自动驾驶汽车的视觉系统,帮助车辆实时理解和适应周围环境。需要注意的是,以上信息源自网络资源,主要用于学习和交流,版权归属原作者。使用时请谨慎,以确保信息的准确性和适用性。

ava是什么意思呀..
1. 编程语言: 在计算机领域,AVA可能指的是一种编程语言。例如,Java语言有时会被简写为AVA,特别是在某些社区或论坛中。这种语言常用于软件开发和应用程序设计。2. 特定领域的术语: 在不同的行业或领域中,AVA可能有特定的含义。例如,在军事或航空领域,AVA可能代表某种装备、技术或操作的代号。3....

“AVA”代表什么?
"AVA" 被广泛用于描述这种特定的疫苗形式。总体来说,"AVA" 是一个用于明确表示吸附炭疽疫苗的专业术语,其应用广泛且具有明确的医学含义。它在英语中的使用频率和分类信息,表明其在预防和控制炭疽病防控策略中的重要地位。请注意,这些信息主要用于教育和学术交流,如需实际应用,请确保遵循专业指导。

大庆市18434119296: java使用什么技术实现excel数据的批量导入导出 -
大狐度依诺: 最常用的技术就是pio技术.public static void readFromExcel(String file) throws IOException{ HSSFWorkbook myExcelBook = new HSSFWorkbook(new FileInputStream(file)); HSSFSheet myExcelSheet = myExcelBook.getSheet("...

大庆市18434119296: JAVA读取excel用什么技术好? -
大狐度依诺: 现在很多公司都是用java里的PoI操作EXcel,网上也有很多这种代码,但是有些限制,好像只能读的Excel版本是2008以下的.

大庆市18434119296: JAVA 用什么工具可以对excel进行创建组的操作呢????????? -
大狐度依诺: 在Java处理Excel这个领域已经有很多开源的解决方案,目前在这方面做得比较出色的有ApachePOI和JExcelApi(jxl)

大庆市18434119296: 如何利用JAVA生成Excel文件 -
大狐度依诺: package beans.excel;import java.io.IOException; import java.io.OutputStream;import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException;public class ...

大庆市18434119296: 怎样利用java实现把数据自动导入excel? -
大狐度依诺: 给你个例子,转自xiaosa1984.自己按照自己的要求修改即可.jxl.jar 这个得下载导入.需要导入jxl.jar 搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了.创建文件 拟生成一个名为“测试数据.xls”的Excel文件,其中第...

大庆市18434119296: Java如何操作Excel?
大狐度依诺: import java.io.*; import jxl.*; … … … … try { //构建Workbook对象, 只读Workbook对象 //直接从本地文件创建Workbook //从输入流创建Workbook InputStream is = new ...

大庆市18434119296: Java中利用JCOM实现仿Excel编程要注意什么?
大狐度依诺: 在Java中使用JCOM和JXL注意要点: (1)在你的lib下要有jdom-1.0.jar,jxl-2.5.5.jar,jcom-2.2.4.jar,jcom.dll. (2)要把jcom.dll同时放到你JDK的bin目录下或...

大庆市18434119296: 利用java怎么实现生成报表(Excel文件) -
大狐度依诺: JAVA POI 组件 //创建HSSFWorkbook对象 HSSFWorkbook wb = new HSSFWorkbook(); //创建HSSFSheet对象 HSSFSheet sheet = wb.createSheet("sheet0"); //创建HSSFRow对象 HSSFRow row = sheet.createRow((short)0); //创建...

大庆市18434119296: java 实现excel growth -
大狐度依诺: 使用Java POI.若POI中未直接提供,可先做成一个模板,然后复制模板即可实现.

大庆市18434119296: 用java实现excel的读取,用的是eclipse吗? -
大狐度依诺: eclipse只是一个编辑代码的软件而已,不管你用什么,那怕你直接新建一个.txt文档,改成.java后缀,用jdk编译运行照样可以运行代码.你所谓的用java读取excel,是用第三方jar包.有两种可选择:一种是jxl.jar包:只提供03版及其以下版本的excel读写操作.另一种是poi.jar包:这种提供07版及其以上版本的excel读写操作.个人认为poi包用起来更方便,提供了大量接口实现对每个单元格的操作,比如背景颜色,字体及大小等等.看你需求是对什么版本的excel操作.如有不懂,请追问 希望能够帮到你

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网