`
iegyiy
  • 浏览: 21454 次
社区版块
存档分类
最新评论

java导入Excel包含多张sheet表的.xls .xslx .txt三种后缀格式的文件

阅读更多
java导入.xls .xslx .txt三种后缀格式的文件
public static void readFile(File file) throws IOException{
//判断文件类型
String fileName = file.getName();
fileName = fileName.toLowerCase();
if(fileName.endsWith("xls")){
readXls(file);
}else if(fileName.endsWith("txt")){
readTxt(file);
}else if(fileName.endsWith("xlsx")){
readXlsx(file);
}else{
throw new IOException("不支持文件类型");
}
}

//导入2003 xls文件
private static void readXls(File file)throws IOException{
String[] keys ={ "content","mobile","ext","status","responseid","error","sendtime","bak1","bak2","bak3","bak4"};

HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
int length = hwb.getActiveSheetIndex();//判断有几张活动的sheet表
for(int k=0; k<=length; k++){
HSSFSheet sheet = hwb.getSheetAt(k);
Object value = null;
HSSFRow row = null;
HSSFCell cell = null;
List<Dto> lists=null;

         for(int i=sheet.getFirstRowNum()+1; i<sheet.getPhysicalNumberOfRows(); i++){
row = sheet.getRow(i);
if(row == null){
continue;
}
if(i%1000==1){
lists=new ArrayList<Dto>();
}
Map hashmap = new HashMap();

for(int j=row.getFirstCellNum(); j<row.getLastCellNum(); j++){
cell = row.getCell(j);
if(cell == null){
value = "";
hashmap.put(keys[j], value);
continue;
}
DecimalFormat df = new DecimalFormat("0");//格式化number String
//字符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化日期字符串
DecimalFormat nf = new DecimalFormat("0");//格式化数字

switch(cell.getCellType()){
case XSSFCell.CELL_TYPE_STRING:
//System.out.println(i+"行"+j+"列 is String type" );
value = cell.getStringCellValue();
//System.out.println("  "+ value +"  ");
break;
case XSSFCell.CELL_TYPE_NUMERIC:
//System.out.println(i+"行"+j+"列 is Number type; DateFormt:" +cell.getCellStyle().getDataFormatString());
if("@".equals(cell.getCellStyle().getDataFormatString())){
value = df.format(cell.getNumericCellValue());

}else if("General".equals(cell.getCellStyle().getDataFormatString())){
value = nf.format(cell.getNumericCellValue());
}else{
value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));

}
//System.out.println("  "+value+"  ");
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
//System.out.println(i+"行"+j+"列 is Boolean type");
value = cell.getBooleanCellValue();
//System.out.println("  "+value+"  ");
break;
case XSSFCell.CELL_TYPE_BLANK:
//System.out.println(i+"行"+j+"列 is Blank type");
value = "";
//System.out.println("  "+value+"  ");
break;
default:
//System.out.println(i+"行"+j+"列 is default type");
value = cell.toString();
//System.out.println("  "+value+"  ");
}

hashmap.put(keys[j],value);

}
//将数据插入数据库
Dto fileDto = new BaseDto();
for (int j = 0; j < keys.length; j++) {
if (hashmap.get(keys[j]) == null
|| "".equals(hashmap.get(keys[j]))) {
if ("sendtime".equals(keys[j])) {
fileDto.put(keys[j], s_date);
} else {
fileDto.put(keys[j], "");
}
} else {
fileDto.put(keys[j], hashmap.get(keys[j]));
}
}
lists.add(fileDto);
if(i%1000==0 || i==sheet.getPhysicalNumberOfRows()-1){
myBatchService.insertBatchdx(lists);
}
// cetReadFilesService.insertFile(fileDto);
}
}

}

//导入2007 xlsx文件
private static void readXlsx(File file) throws IOException{
String[] keys = { "content","mobile","ext","status","responseid","error","sendtime","bak1","bak2","bak3","bak4"};
//购置XXSFWorkbook对象,传入file文件
XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
//格式化日期字符串
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
//读取第一张表格内容
int length = xwb.getActiveSheetIndex();
for(int k=0; k<=length; k++){
XSSFSheet sheet = xwb.getSheetAt(0);
Object value = null;
XSSFRow row = null;
XSSFCell cell = null;
List<Dto> lists=null;

for(int i=sheet.getFirstRowNum()+1; i<sheet.getPhysicalNumberOfRows(); i++){
row = sheet.getRow(i);
if(row==null){
continue;
}
if(i%1000==1){
lists=new ArrayList<Dto>();
}

Map hashmap = new HashMap();

for(int j=row.getFirstCellNum(); j<row.getLastCellNum(); j++){
cell = row.getCell(j);
if(cell == null){
value = "";
hashmap.put(keys[j], value);
continue;
}
DecimalFormat df = new DecimalFormat("0");//格式化 number String
//字符
DecimalFormat nf = new DecimalFormat("0");//格式化数字

switch(cell.getCellType()){
case XSSFCell.CELL_TYPE_STRING:
//System.out.println(i+"行"+j+"列 is String type" );
value = cell.getStringCellValue();
//System.out.println("  "+ value +"  ");
break;
case XSSFCell.CELL_TYPE_NUMERIC:
//System.out.println(i+"行"+j+"列 is Number type; DateFormt:" +cell.getCellStyle().getDataFormatString());
if("@".equals(cell.getCellStyle().getDataFormatString())){
value = df.format(cell.getNumericCellValue());

}else if("General".equals(cell.getCellStyle().getDataFormatString())){
value = nf.format(cell.getNumericCellValue());
}else{
value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));

}
//System.out.println("  "+value+"  ");
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
//System.out.println(i+"行"+j+"列 is Boolean type");
value = cell.getBooleanCellValue();
//System.out.println("  "+value+"  ");
break;
case XSSFCell.CELL_TYPE_BLANK:
//System.out.println(i+"行"+j+"列 is Blank type");
value = "";
//System.out.println("  "+value+"  ");
break;
default:
//System.out.println(i+"行"+j+"列 is default type");
value = cell.toString();
//System.out.println("  "+value+"  ");
}

hashmap.put(keys[j], value);
}
//将数据插入数据库
Dto fileDto = new BaseDto();
for (int j = 0; j < keys.length; j++) {
if (hashmap.get(keys[j]) == null
|| "".equals(hashmap.get(keys[j]))) {
if ("sendtime".equals(keys[j])) {
fileDto.put(keys[j], s_date);
} else {
fileDto.put(keys[j], "");
}
} else {
fileDto.put(keys[j], hashmap.get(keys[j]));
}
}
lists.add(fileDto);
if(i%1000==0 || i==sheet.getPhysicalNumberOfRows()-1){
myBatchService.insertBatchdx(lists);
}
}
}
}
/**
* 导入TXT文件
*/
    private static void readTxt(File file) {
    //count用于计数
    int count = 0;
    String[] keys = {"content","mobile","ext","status","responseid","error","sendtime","bak1","bak2","bak3","bak4"};
    FileReader reader;
    List<Dto> lists=null;
   
        try { 
        reader = new FileReader(file);
             BufferedReader bf=new BufferedReader(reader);//一行一行读
            
             try {
                   String t1=bf.readLine(); 
                   while(t1 != null){
                   count++;
                   if(count%1000==1){
           lists=new ArrayList<Dto>();
              }
                  
                   String[] strs = t1.split("\\|");
                   Map hashmap = new HashMap();
                   for(int i=0; i<strs.length; i++){  
                   hashmap.put(keys[i], strs[i]);
                  
                   }
           //将数据插入数据库
                   if(count != 1){
              Dto fileDto = new BaseDto();
              for (int j = 0; j < keys.length; j++) {
              if (hashmap.get(keys[j]) == null
           || "".equals(hashmap.get(keys[j]))) {
           if ("sendtime".equals(keys[j])) {
           fileDto.put(keys[j], s_date);
           } else {
           fileDto.put(keys[j], "");
           }
           } else {
           fileDto.put(keys[j], hashmap.get(keys[j]));
           }
              }
              lists.add(fileDto);
       if(count%1000==0 ){
    myBatchService.insertBatchdx(lists);
       }
                   }
                t1=bf.readLine(); 
                if(t1==null){
                myBatchService.insertBatchdx(lists);
                }
                  }
             }catch (IOException e){ 
            e.printStackTrace(); 
              }
         }catch(FileNotFoundException e){
        e.printStackTrace();
         }
     } 
分享到:
评论

相关推荐

    js 导出excel(.xls格式)

    为了减轻服务器的压力,很多网站采用的js下载或导出数据的方式...该文件就是利用javascript把json数据转换成excel数据后,并进行了下载。 真实可用,而且使用起来方便快捷,为了开发快速,可以下载看看。 里面有教程的

    Java POI根据模板生成Excel(xlsx)文件

    Java POI库是一个广泛使用的开源项目,专门用于处理Microsoft Office格式的文件,包括Excel的.xls和.xlsx文件。在本示例中,我们关注的是如何利用Java POI来根据模板生成.xlsx格式的Excel文件。这个过程涉及到对...

    excel含图片导入 包含wps嵌入图片 java

    总结起来,"Excel含图片导入 包含WPS嵌入图片 Java"这个话题涵盖了Java编程、Excel文件处理、WPS图片嵌入以及使用Maven进行项目构建等多个方面。通过熟练掌握这些技术,开发者可以构建强大的数据处理工具,满足各种...

    ASP.NET导入导出excel文件数据类

    这个主题主要涉及两个版本的Microsoft Excel文件格式:2003(xls)和2007以后的版本(xlsx)。这两种格式在内部存储结构上有所不同,但ASP.NET和C#提供了多种库来处理它们。 首先,我们来了解一下Excel文件的基本...

    WPF中对Excel文件的导入导出操作详解.rar_excel 导入_wingivw_wpf excel_wpf excel_

    如果你需要处理.xls(旧的二进制格式)文件,可能需要考虑使用Microsoft.Office.Interop.Excel或NPOI。 通过以上的步骤和代码示例,你应该能够理解在WPF中如何利用EPPlus库来实现Excel文件的导入和导出。这对于任何...

    easyPoi模板导出Excel报表(xls 和xlsx 都支持)

    为了解决这个问题,Java开发领域出现了许多库,其中EasyPoi是一款广泛应用的工具,它能够方便地生成Excel报表,支持xls和xlsx两种格式。本文将详细介绍如何使用EasyPoi模板来导出Excel报表,并深入探讨其背后的原理...

    如何将excel.xslx表格数据导出成Visual Fox(VF)表.zip

    1. 打开Excel文件,选择包含数据的工作表。 2. 菜单栏中点击“文件”&gt;“保存为”,在弹出窗口中选择保存类型为“文本(逗号分隔)(*.csv)”或“文本(制表符分隔)(*.txt)”。 3. 选择合适的位置保存,这将把Excel...

    XLS与XLSX互相转换

    XLS与XLSX互相转换,在2003的EXCEL创造的表格在2007版本中打不开的情况下,这是一个利器。

    历年各省GDP数据.xls

    此表格收集了中国历年各省GDP数据,共27年的数据,可作为数据训练、绘制图形的基本数据,文件为表格,可以直接用于复制、粘贴,方便快捷。

    java操作excel

    - **XLS与XLSX的区别**: XLS是Excel的早期文件格式,最多支持65,536行和256列,而XLSX是Office 2007及更高版本引入的新XML格式,支持更多的行、列和样式,同时降低了文件大小。 - **API接口**: Apache POI提供了一...

    前端导出excel,可以控制样式,单元格合并居中等

    总结,"xlsx.full.min.js"库为前端开发者提供了一种方便的方式来控制Excel文件的样式和格式,包括单元格的合并与居中,从而在网页上实现高度定制化的Excel导出功能。通过熟练掌握这个库的使用,你可以为用户提供更加...

    xlsx.full.min.js官方工具包用于js读取excel使用

    JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法:https://blog.csdn.net/qq_38161040/article/details/118678016

    xlsx.full.min.js

    xlsx.full.min.js是基于SheetJS项目的一个轻量级版本,SheetJS是一个强大的开源JavaScript库,它提供了对Excel文件(XLSX和XLSM格式)的读写支持。xlsx.full.min.js则针对Web环境进行了优化,特别适用于需要在网页上...

    unity读取excel配置文件插件

    Excel是一种常用的表格软件,因其强大的数据管理和编辑功能,常被用作游戏开发中的配置文件格式。然而,Unity原生并不支持直接读取Excel文件,因此需要借助特定的插件来实现这一功能。 "unity读取excel配置文件插件...

    java 高级报表导出Excel

    Java库如Apache POI可以处理这两种格式,特别是对新式.xslx格式的支持更为完善。 Apache POI是Java中广泛使用的库,用于读写Microsoft Office文档,包括Excel。要使用Apache POI进行Excel导出,你需要先在项目中...

    excel-couchdb-import:将Excel工作表导入到CouchDBPouchDB

    xslx)导入CouchDB / PouchDB文档,并将工作表转换为JSON。 用法 文档更新冲突是可能的,将被忽略。 excel-couchdb-import path/to/file.xls \ --target http://user:password@couchdbhost.com/targetdb 重新导入 ...

    NPOI导出Excel,比MyXls可塑性更强,附导出实例xls和xlsx

    NPOI支持两种主要的Excel文件格式:.xls(Excel 97-2003格式)和.xlsx(Excel 2007及以上版本的OpenXML格式)。在“NPOI导出Excel(xls和xlsx).cs”这个代码示例中,我们可以看到如何使用NPOI来创建这两种格式的文件...

    C#实现读写Excel文档.rar

    为了解决上述问题,Microsoft推出了Open XML SDK,它允许开发者无需依赖Office组件就能处理Office文档,包括Excel的.xslx格式。以下是一个使用OpenXML SDK写入Excel的示例: ```csharp using DocumentFormat....

    poi-bin-3.9以及读取Excel2007/2010文件的XSSFWorkbook方法所需的架包

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在本文中,我们将深入探讨如何使用Apache POI 3.9版本来读取Excel 2007及更高版本(即XLSX格式)的文件,特别...

    vue.js实现excel和图片的导入

    由于项目需要同时导入excel文档和jpg图片,因此尝试了一些方法来完成任务。 图片数据是以base64格式存入的,显示和转移都比较方便。 一开始考虑的是将图片插入excel中,这样的好处是一一对应,不会出错,但是搜索了...

Global site tag (gtag.js) - Google Analytics