JAVA使用JXL操作Excel

本文介绍了一个Java程序示例,演示如何使用Jxl库读取和写入Excel文件。程序包括从Excel中读取数据到List集合,以及创建新的Excel文件并填充数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

~~

 

code:

 

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class JxlTest
{

    public static void main(String[] args)
    {
        List<String[]> list = readExcel("bbb.xls");

        for (String[] s : list)
        {
            // System.out.println(Arrays.asList(s).toString());
        }

        toExcelTest("ccc.xls");

    }

    /**
     * 用COMMON UPLOAD进行EXCEL文件上传,得到fileItem对象,这里 进行解析,返回集合对象。该方法适合在WEB项目中使用。
     * 
     * @param fileItem
     * @param beginIndex
     *            正式数据的起始行 例如EXCEL文件 有大标题和小标题和列标题,那么该参数应为 4
     * @return
     * @throws BiffException
     * @throws IOException
     */
    public static List<String[]> readExcel(String fileName)
    {

        int beginIndex = 1;
        // 保存结果集
        List<String[]> result = null;
        // 保存EXCEL每行的所有单元格中的数据
        String[] temp = null;
        try
        {
            File file = new File(fileName);
            Workbook workBook = Workbook.getWorkbook(file);
            Sheet sheet = workBook.getSheet(0);
            Cell cell = null;
            int rowSize = sheet.getRows();
            int colSize = sheet.getColumns();

            result = new ArrayList<String[]>();
            for (int i = beginIndex - 1; i < rowSize; i++)
            {
                // 保存EXCEL每行的所有单元格中的数据
                temp = new String[colSize];
                for (int t = 0; t < colSize; t++)
                {
                    cell = sheet.getCell(t, i);
                    String content = "";
                    if (cell.getContents() != null)
                    {
                        // 去空格,特殊字符和回车键盘
                        content = cell.getContents().replace("%", "").replace("|", "").replace(" ", "").replaceAll(
                                "\\n", "").replaceAll("\\r", "").trim();

                    }
                    temp[t] = content;
                }
                // 将每列的的数据存入结果集中
                result.add(temp);
            }
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
        return result;
    }

    /**
     * 
     * 生成excel
     * 
     * @param fileName
     * @author
     * @date
     */
    public static void toExcelTest(String fileName)
    {

        // 初始化工作表
        WritableWorkbook workbook = null;
        try
        {

            // 设置弹出对话框

            // 创建工作表
            workbook = Workbook.createWorkbook(new File(fileName));

            // 定义工作表 sheet 标题
            WritableSheet ws = workbook.createSheet("Mapping", 0);
            ws.getSettings().setShowGridLines(true);
            ws.getSettings().setProtected(false);

            // 控制列的宽度,如果你要不给一样的宽度,就单独写,i代表的是列的下标,从0开始 ,从左到右
            for (int i = 0; i < 7; i++)
            {
                ws.setColumnView(i, 20);
            }

            // 創建标题列名称
            Label titleLabel = null;
            titleLabel = new Label(0, 0, "StuNo", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(1, 0, "StuName", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(2, 0, "StuMoniter", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(3, 0, "StuAddr", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(4, 0, "Stu TELL", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(5, 0, "Stu sex", getHeadFormat());
            ws.addCell(titleLabel);
            titleLabel = new Label(6, 0, "Stu classNo", getHeadFormat());
            ws.addCell(titleLabel);

            // 循环添加对象数据
            for (int i = 0; i < 2; i++)
            {

                Label stuNoLabel = new Label(0, i + 1, "stuNo");
                Label stuNameLabel = new Label(1, i + 1, "stuName");
                Label stuminterLabel = new Label(2, i + 1, "stuminter");
                Label stuAddrLable = new Label(3, i + 1, "stuAddr");
                // Label stuTellLabel = new Label(4, i + 1, stutell);
                // 如果用这个导出后会有数值和文本的区别
                jxl.write.Number tellNumber = new jxl.write.Number(4, i + 1, Double.parseDouble("23"));
                Label stusexLabel = new Label(5, i + 1, "stusex");
                // Label classNoLabel = new Label(6, i + 1,stuClassno);
                // 一下要注意了,必须要转成double类型的数据
                jxl.write.Number classNoNumber = new jxl.write.Number(6, i + 1, Double.parseDouble("36"));

                ws.addCell(stuNoLabel);
                ws.addCell(stuNameLabel);
                ws.addCell(stuminterLabel);
                ws.addCell(stuAddrLable);
                ws.addCell(tellNumber);
                ws.addCell(stusexLabel);
                ws.addCell(classNoNumber);
            }

            workbook.write();
            workbook.close();
        } catch (Exception e)
        {
            System.out.println(e.getCause());
            System.out.println(e.getMessage());
        }
    }

    /**
     * 设置单元格样式
     * 
     * @return
     * @throws Exception
     */
    public static WritableCellFormat getHeadFormat() throws Exception
    {
        // 设置字体
        WritableFont wf = new WritableFont(WritableFont.ARIAL, 8, WritableFont.BOLD);

        // 创建单元格FORMAT
        WritableCellFormat wcf = new WritableCellFormat(wf);
        wcf.setAlignment(Alignment.CENTRE);
        wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
        wcf.setLocked(true);
        wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
        wcf.setBackground(Colour.GREY_25_PERCENT);
        return wcf;
    }
}

 

内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值