java向指定的excel单元格里添加数据

package org.jeecg.modules.to.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;

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.poifs.filesystem.POIFSFileSystem;

public class TextUtil{

    public static void main(String[] args) throws Exception{

        inserSheetData();
    }

    //向已知表中插入数据,累计追加
    //写入前先判断表是否存在,表中是否有数据
    private static void inserSheetData() throws Exception {

        String filePath = "C:\\Users\\oshait24\\Desktop\\Tool基本信息表.xls";
        FileInputStream fs=new FileInputStream(filePath);

        //使用POI提供的方法得到excel的信息
        POIFSFileSystem fileSystem = new POIFSFileSystem(fs);
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileSystem);
        //获取到工作表,因为一个excel可能有多个工作表
        HSSFSheet InsertSheet=hssfWorkbook.getSheetAt(0);
        //获取第一行(excel中的行默认从0开始,所以这就是为什么,一个excel必须有字段列头),即,字段列头,便于赋值
        HSSFRow row=InsertSheet.getRow(0);
        //分别得到最后一行的行号,和一条记录的最后一个单元格
        System.out.println("最后一行的行 "+InsertSheet.getLastRowNum());

        //向文件中写入数据
        FileOutputStream out=new FileOutputStream(filePath);

        //表示你想在那个行+1插入数据    比如6就在第7行
        //int lastRowNum = InsertSheet.getLastRowNum()+1;
        int lastRowNum = 6;
        
        
        //在指定行后追加数据
        //row=InsertSheet.createRow((short)(lastRowNum)); //createRow会删除掉整行数据
        row=InsertSheet.getRow((short)(lastRowNum));//只更新本单元格

        //设置第一个(从0开始)单元格的数据
        row.createCell(1).setCellValue("xiaoming");//列+1   1则在第2列插入  
        row.createCell(2).setCellValue(24);
        row.createCell(3).setCellValue("nan");
        row.createCell(4).setCellValue("nanjing");

        out.flush();
        hssfWorkbook.write(out);
        out.close();

        System.out.println("物理列数="+row.getPhysicalNumberOfCells()+" 实际列数="+row.getLastCellNum());
    }

}

定义设置向个单元格添加数据

package org.jeecg.modules.to.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;

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.poifs.filesystem.POIFSFileSystem;

public class TextUtil{

    public static void main(String[] args) throws Exception{

        inserSheetData("7,8","3,4","q,w");
    }

    //向已知表中插入数据,累计追加
    //写入前先判断表是否存在,表中是否有数据
    private static void inserSheetData(String hang ,String lie,String shuju) throws Exception {

        String filePath = "C:\\Users\\oshait24\\Desktop\\Tool基本信息表.xls";
        FileInputStream fs=new FileInputStream(filePath);

        //使用POI提供的方法得到excel的信息
        POIFSFileSystem fileSystem = new POIFSFileSystem(fs);
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileSystem);
        //获取到工作表,因为一个excel可能有多个工作表
        HSSFSheet InsertSheet=hssfWorkbook.getSheetAt(0);
        //获取第一行(excel中的行默认从0开始,所以这就是为什么,一个excel必须有字段列头),即,字段列头,便于赋值
        HSSFRow row=InsertSheet.getRow(7);
        //分别得到最后一行的行号,和一条记录的最后一个单元格
        System.out.println("最后一行的行 "+InsertSheet.getLastRowNum());

        //向文件中写入数据
        FileOutputStream out=new FileOutputStream(filePath);

//        //表示你想在那个行+1插入数据    比如6就在第7行
//        //int lastRowNum = InsertSheet.getLastRowNum()+1;
//        int lastRowNum = 6;
//
//        //在指定行后追加数据
//        row=InsertSheet.createRow((short)(lastRowNum));
//
//        //设置第一个(从0开始)单元格的数据
//        row.createCell(1).setCellValue("xiaoming");//列+1   1则在第2列插入
//        row.createCell(2).setCellValue(24);
//        row.createCell(3).setCellValue("nan");
//        row.createCell(4).setCellValue("nanjing");


        //自动设置的
        String[] hangs = hang.split(",");
        String[] lies = lie.split(",");
        String[] shujus = shuju.split(",");
        for (int i = 0; i <hangs.length ; i++) {
            for (int j = 0; j <lies.length ; j++) {

                int a =Integer.parseInt(hangs[i]);
                int b =Integer.parseInt(lies[j]);
                String c =shujus[j];
                //在指定行后追加数据
                //row=InsertSheet.createRow((short)(a)); //createRow会删除掉整行数据
                row=InsertSheet.getRow((short)(a));//只更新本单元格

                //设置第一个(从0开始)单元格的数据
               // row.createCell(b).setCellValue(c);//列+1   1则在第2列插入
                row.createCell(b).setCellValue("hahh");//列+1   1则在第2列插入

                System.out.println(a+b+c);
            }
        }

        out.flush();
        hssfWorkbook.write(out);
        out.close();

        System.out.println("物理列数="+row.getPhysicalNumberOfCells()+" 实际列数="+row.getLastCellNum());
    }

}
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Apache POI 库来实现在单元格设置字体背景颜色。下面是一个简单的示例代码: ```java import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; import java.io.IOException; public class ExcelWriter { public static void main(String[] args) throws IOException { Workbook workbook = WorkbookFactory.create(true); // 创建 Excel 工作簿 Sheet sheet = workbook.createSheet("Sheet1"); // 创建工作表 // 创建样式 CellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 创建字体 Font font = workbook.createFont(); font.setFontName("Arial"); font.setFontHeightInPoints((short) 16); font.setBold(true); font.setColor(IndexedColors.RED.getIndex()); // 将字体应用到样式 style.setFont(font); // 创建单元格 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, World!"); cell.setCellStyle(style); // 将工作簿保存到文件 FileOutputStream outputStream = new FileOutputStream("example.xlsx"); workbook.write(outputStream); workbook.close(); outputStream.close(); } } ``` 在上面的示例代码中,我们创建了一个样式对象,并设置了背景颜色为黄色。然后,我们创建了一个字体对象,并设置了字体大小、加粗和颜色。接着,我们将字体应用到样式中,并使用样式来设置单元格的背景和字体。最后,我们将工作簿保存到文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值