pio java读取xls和xlsx文件

工程所需jar包


jar包下载地址


http://download.csdn.net/download/jasonhector/9981053

直接贴上代码 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;



import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class ExcelFile {


public static void getXlsxExcelData(File file)
{
InputStream is;
try {
is = new FileInputStream(file);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
//取每一个工作薄
           for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
           XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
           if (xssfSheet == null) {
               continue;
           }
           // 获取当前工作薄的每一行
           for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
               XSSFRow xssfRow = xssfSheet.getRow(rowNum);
               if (xssfRow != null) {
             //这里需要注意 虽然是第一列数据 但是用这个输出的话得不到表格的数据而是返回 1.0 2.0 这样是数字 
                   XSSFCell one = xssfRow.getCell(0);
                   System.out.println("第"+rowNum+"行"+"第1列"+xssfRow.getCell(0));//这样才能输出表格内的内容
                   //第二列数据
                   XSSFCell two = xssfRow.getCell(1);
                   System.out.println("第"+rowNum+"行"+"第2列"+xssfRow.getCell(1));
                   //第三列数据
                   XSSFCell three = xssfRow.getCell(2);
                   System.out.println("第"+rowNum+"行"+"第3列"+xssfRow.getCell(2));
                  


               }
           }
       }
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      
        // 获
   }

                  
   public static void getXlsExcelData(File file) {
    InputStream is;
try {
is = new FileInputStream(file);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
// 获取每一个工作薄
       for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
           HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
           if (hssfSheet == null) {
               continue;
           }
           // 获取当前工作薄的每一行
           for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
               HSSFRow hssfRow = hssfSheet.getRow(rowNum);
               if (hssfRow != null) {
               //第一列数据
                   HSSFCell one = hssfRow.getCell(0);
                   System.out.println("第"+rowNum+"行"+"第1列"+hssfRow.getCell(0));
                   //第二列数据
                   HSSFCell two = hssfRow.getCell(1);
                   System.out.println("第"+rowNum+"行"+"第2列"+hssfRow.getCell(1));
                  //第三列数据
                   HSSFCell three = hssfRow.getCell(2);
                   System.out.println("第"+rowNum+"行"+"第3列"+hssfRow.getCell(2));
                   
               }
           }
       }
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      
      
  
   }
public static void main(String arfs[])
{
ExcelFile.getXlsxExcelData(new File("D:\\test.xlsx"));

                       System.out.println("----------------------------------");
ExcelFile.getXlsExcelData(new File("D:\\test.xls"));
}

}


执行结果


excel表格数据


序号 姓名 年龄 性别
1 frank 21 male
2 lucy 11 female
3 candy 22 male
    

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 Apache POI 实现 Java 中 Word 模板表格和行一起循环的功能。下面是一个示例代码,可以参考一下: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableRow; public class WordTemplateExample { public static void main(String[] args) { String templateFilePath = "template.docx"; String outputFilePath = "output.docx"; Map<String, Object> data = new HashMap<>(); data.put("table1", new String[][] { { "name1", "value1" }, { "name2", "value2" } }); data.put("table2", new String[][] { { "name3", "value3" }, { "name4", "value4" } }); try (FileInputStream fis = new FileInputStream(new File(templateFilePath)); XWPFDocument document = new XWPFDocument(fis); FileOutputStream fos = new FileOutputStream(new File(outputFilePath))) { for (XWPFParagraph paragraph : document.getParagraphs()) { replaceInParagraph(paragraph, data); } for (XWPFTable table : document.getTables()) { replaceInTable(table, data); } document.write(fos); } catch (Exception e) { e.printStackTrace(); } } private static void replaceInParagraph(XWPFParagraph paragraph, Map<String, Object> data) { for (XWPFRun run : paragraph.getRuns()) { String text = run.getText(0); if (text != null) { for (Map.Entry<String, Object> entry : data.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); if (text.contains(key)) { if (value instanceof String) { text = text.replace(key, (String) value); run.setText(text, 0); } } } } } } private static void replaceInTable(XWPFTable table, Map<String, Object> data) { for (XWPFTableRow row : table.getRows()) { for (Map.Entry<String, Object> entry : data.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); if (row.getCell(0).getText().contains(key)) { if (value instanceof String[][]) { String[][] array = (String[][]) value; for (int i = 0; i < array.length; i++) { XWPFTableRow newRow = table.insertNewTableRow(table.getNumberOfRows()); newRow.getCell(0).setText(array[i][0]); newRow.getCell(1).setText(array[i][1]); } } } } } } } ``` 在上述代码中,我们首先通过 FileInputStream 和 XWPFDocument 读取 Word 模板文件,然后使用 Map 存储替换的数据,最后通过 FileOutputStream 将修改后的 Word 文件输出。 在 replaceInParagraph 方法中,我们用 XWPFRun 对象获取段落中的文本内容,然后使用 Map 中的数据进行替换。 在 replaceInTable 方法中,我们遍历表格中的行和数据 Map,如果表格中的第一列包含指定的 key,则将整个行替换为指定的二维数组中的数据。 注意:在使用 POI 进行 Word 模板操作时,需要使用 docx 格式的文件,而且在替换之前,需要保证 Word 模板文件中的占位符和数据 Map 中的 key 一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值