中企动力 > 商学院 > java excel导入导出
  • ?

    宏业清单计价软件导入EXCEL表格数据怎么处理?

    Lai

    展开

    1:点击软件上方菜单栏的【导入导出】,弹出下拉菜单:

    向左转|向右转

    2:点击该下拉菜单中的【导入excel文件】,弹出选择界面 ,如下图:

    向左转|向右转

    3:在弹出的窗口中选择“分部分项工程量清单”,点击右侧【选择】:

    向左转|向右转

    4:在弹出的打开窗口中,选择要导入的excel文件,点击打开按钮,弹出导入窗口:

    向左转|向右转

    5:先进行【列识别】,主要是识别项目编码、项目名称、项目特征、计量单位和工程数量、最高限价、工程内容、计算规则、备注,然后进行【行识别】,主要是识别分部行、清单行、子目行、子目下主材行、子目下设备行、子目级主材行、子目级设备行、分部行和无效行,识别完以后,点击【导入】,导入成功以后,会弹出提示:

    向左转|向右转

    点击确定后,点击关闭,返回到分部分项页面,如下图:

    向左转|向右转

    此时就可以对每条导入的清单分别进行组价了。

    6:同样,可以导入措施项目清单(可计量措施)、其他项目清单(暂列金额、专业工程暂估价、零星工作/计日工、总承包服务费)、甲方评标材料表和暂估价材料表。

        导入窗口中其他功能介绍:

    向左转|向右转

    历史工程:导入Excel文件匹配历史工程;

    隐藏已识别行:把已经识别好的行隐藏掉,这样可以快速把未识别的行过滤出来,便于手动识别行;

    显示所有行:把隐藏掉的识别行再全部显示出来;

    全部选择:把所有已经识别的行的“选择”列打勾,只有打勾的列才被导入软件;

    全部取消:把所有行的“选择”列的勾去掉。 

        注意事项:

        1.为确保甲方清单不被改动,导入的甲方清单默认是锁定状态不能修改的,如果想修改,可以点击工具栏“解除清单锁定”按钮。

        2. 导入以后材料的市场价需要手动调整,因为材料价格是不能导入的,导入EXCEL,子目所有材料价都是原始的预算价。

        3.综合单价分析表是导不进去的。

        4.技术措施可以通过导入EXCEl导入计价软件,需要注意的是导入时将导入导入窗口左侧切换为可计量清单。

    补充:1.导入的EXCEL文件没有版本要求,任何版本的EXCEL文件都可以导入计价。

             2.之前导入错误,把清空导入打勾,可以把导入错误的子目一次性删除。

             3.不能整个项目一起导入EXCEL,因为软件不能自动区分专业进行分配,需要进入不同的单位工程进行导入。

             4.材料表虽然满足有材料编码.名称.单位.数量的要求,但是不可以通过导入EXCEL的方式,导入到软件中。

    新版协同一体化中导入excel操作步骤:

    新建单位工程---导入导出导入excel,选择表格格式,按照箭头的方向再选择自己需要导入的表,然后进行列识别,清单编码,名称 ,单位,项目特征,工程量,项目特征分别识别,然后点击识别行,上述操作完成后点击导入(清单和定额同样的操作方式,只是清单的编码名称为项目编码名称,子目的需要识别为子目编码名称)如下图所示:

    向左转|向右转

    (本文内容由百度知道网友shihoumacili贡献)

  • ?

    EXCEL用户别把自己搞得那么累,1个工具让你实现自动化工作!

    于人龙

    展开

    很多基层员工,使用EXCEL会很多,尤其是一些经常需要制作表格、录入表格和汇总表格的岗位,表格无穷多,工作量很大,有时不小心出错了,还得重新改,弄不好还得挨骂和受处罚,有没有办法让咱们这些EXCEL表哥表妹工作轻松一些、效率更高一些,身心愉快一些呢?

    今天给大家分享一个工具和用法,让咱们企业的EXCEL报表处理工作变得更轻松简单一些。

    让EXCEL表单数据处理工作更高效的其中一个方法就是减少重复工作提高录入效率和减少数据出错。仅仅靠EXCEL本身来解决这个问题不是太好办。那今天这个工具就能轻松做到。

    云表,也许大家接触还不多,但这个工具长像和EXCEL差不多,但是功能可比EXCEL强很多,我们今天先分享一下云表的快捷录入的做法。

    自动录入

    举个例子来说:销售部或生产部的订单员,每天都会录入很多订单,而客户是相对固定的,就是那么些家,但是每次录订单的时候这些客户信息都要重复输入,很麻烦,如果用云表来做的话,可以实现只要输入客户的名称,其他相关信息如,电话,收货地址、账号、联系人等各种基本信息都自动录入了,就样就能节约很多时间。

    自动生成编号

    而且订单日期,可以直接选择,点点鼠标即可,不能手动录入,订单编号也可以自定义编号规则,自动生成编号,系统自动生成,不会重复也不会出错。

    自动校验数据

    你可以自定义单元格数据的类型和格式,如果填写错误,系统会直接报错提示。

    自动汇总生成分析报表

    所有表单填写完成后,设计个分析报表模板会自动汇总各种分析图片。

    自动计算

    这个EXCEL也可以,但是云表可以做到正算和反算,不会出现像EXCEL那种死循环。比如,通过单价和数量算总金额,也可以通过总金额反算出单价或者数量。

    导入导出EXCEL文档

    如果需要把EXCEL文档导入到云表,或者把云表的表单导出EXCEL表单,都可以分分钟完成。

    以上操作,很简单,最基层工作人员,不需要技术能力,照着云表的教程设置 一下就好了。个人使用或者小公司,大企业的某个部门使用都是可以不花钱的。给大家一个注册地址,也是云表网站,注册好后,上面也有教程。

    当然了,云表,是可以按这个方法设计各种管理软件,不用编程。一般像进销存,简易仓库管理,生产管理,BOM等小型的管理软件,都是可以照 着教程做出来的,当然如果复杂的软件像ERP,或者MES,WMS等软件,是需要对企业业务多些了解,对云表技术了解更多一些,也可以不用编程来实现。

    如果觉得云表实用,那就收藏并转发给你的同事吧。

    关注我,获取更多实用工具和教程。

    云表还有官方学习群,有专业老师实时在线指导学习哦,要加入,请在下方评论留言

  • ?

    如何在中望3D方程式管理器中导入导出EXCEL

    布里德灵顿

    展开

    工程师们进行产品设计的过程中,有时需要体现各尺寸参数之间的关系,或者进行变量化设计,此时会使用方程式来进行相关工作,而在中望3D中,方程式的编辑既可一条一条的输入,亦可直接使用已有的EXCEL数据。

      接下来,我们以下图的轴承变量数据为例,在中望3D编辑方程式,并导入导出EXCEL。

      1.点击左上方的蓝色小三角按钮,在展开菜单中点击“插入”,选择“方程式管理器”。

      2.打开管理器对话框,即可进行方程式的编辑。图中是已编辑的变量,亦可通过下方对话框输入新的方程式。

      3.点击右上方的“输出方程”按钮,将已有的方程式输出为EXCEL。

      4.输出后的EXCEL文档如图所示。

      5.接着,插入一个变量“C”,它的表达式为“Rn+Rw”,如图所示。

      6.点击方程式管理器右上方的“输入方程”按钮,将编辑后的EXCEL方程式输入。

      7.输入时若有同名变量,将进行提示,根据需要选择“新建”还是“重写”,这里我们选择“重写”的方式。

      

      8.输入后点击“应用”,即可完成EXCEL方程式输入,结果如图所示。

      综上所述,中望3D方程式管理器,可以满足设计师们对方程式编辑的需要,既可逐条编辑,亦可借用EXCEL方式进行方程式的编辑,有效地提高设计效率。

  • ?

    松勤软件测试基础-Excel导入导出功能测试点

    回不去

    展开

    很多有大量数据处理的系统都有批量导入导出功能。导入导出的文件格式通常为Excel文件。对于导入导出功能也是个测试的难点和复杂点,总结主要测试点有以下内容:

     1,模板下载功能

    一般导出导出功能会有一个模板下载功能,此功能需要检查模板是否可以正常下载,正常打开,检查Excel模板文件和网站中的数据字段是否一致即可。

     2,文件导入功能

    1) 错误提示,

    如果导入的excel表格中中某一行或者某一字段格式不对或者数据为空,是否可以正常导入正确部分的数据,对错误的数据进行提示。

    2)导入其他格式的文件

    当导入的文件格式不正确时,系统是否做出正确的判断,并给出对应的错误提示。

    3)重复导入相同的文件

    重复导入相同的文件是否可以导入成功,如果可以导入成功,数据将如何处理,比如覆盖或者忽略?

    4)不使用下载的模板,自己新建excel导入

    自己手动新建excel或者对其他excel进行修改,使excel格式和模板一致,这种情况下数据填写正确的话,应可以正确的导入系统。

    5)表头检查:包括去掉、修改、新增列、列之间切换等

    3,文件导出功能

    1)导出的excel表格的格式检查,主要检查导出的excel格式是否符合预期

    ,各字段是否正确。另外导出的excel文件名是否有要求。如果有要求,是否正确。

    2)数据检查,导出全部数据功能是否正确,到处部分数据功能是否正确,选择数据为空时是否可以导出。导出的数据内容是否与网页中的内容一致。

  • ?

    整理关于java写入内容到excel的例子供大家参考

    夜微澜

    展开

    1POI jar简介

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    2POI jar下载

    poi下载地址:https://apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz

    下载之后把压缩包解压,然后在项目里面引用解压文件夹里面的jar

    3新建ReadExcelTest java project,引入poi相关jar

    4创建一个WriteExcel java类,编写代码,写入excel里面

    package test;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStream;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.Cell;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    public class WriteExcel {

    private static final String EXCEL_XLS = "xls";

    private static final String EXCEL_XLSX = "xlsx";

    @SuppressWarnings("rawtypes")

    public static void writeExcel(List> dataList, int cloumnCount,

    String finalXlsxPath) {

    OutputStream out = null;

    try {

    // 获取总列数

    int columnNumCount = cloumnCount;

    // 读取Excel文档

    File finalXlsxFile = new File(finalXlsxPath);

    Workbook workBook = getWorkbok(finalXlsxFile);

    // sheet 对应一个工作页

    Sheet sheet = workBook.getSheetAt(0);

    /**

    * 删除原有数据,除了属性列

    */

    int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算

    System.out.println("原始数据总行数,除属性列:" + rowNumber);

    for (int i = 1; i <= rowNumber; i++) {

    Row row = sheet.getRow(i);

    sheet.removeRow(row);

    }

    // 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效

    out = new FileOutputStream(finalXlsxPath);

    workBook.write(out);

    * 往Excel中写新数据

    for (int j = 0; j < dataList.size(); j++) {

    // 创建一行:从第二行开始,跳过属性列

    Row row = sheet.createRow(j + 1);

    // 得到要插入的每一条记录

    Map dataMap = dataList.get(j);

    String name = dataMap.get("title_id").toString();

    String address = dataMap.get("title_name").toString();

    String phone = dataMap.get("title_name_en").toString();

    for (int k = 0; k <= columnNumCount; k++) {

    // 在一行内循环

    Cell first = row.createCell(0);

    first.setCellValue(name);

    Cell second = row.createCell(1);

    second.setCellValue(address);

    Cell third = row.createCell(2);

    third.setCellValue(phone);

    // 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    if (out != null) {

    out.flush();

    out.close();

    } catch (IOException e) {

    System.out.println("数据汇入成功");

    * 判断Excel的版本,获取Workbook

    *

    * @param in

    * @param filename

    * @return

    * @throws IOException

    public static Workbook getWorkbok(File file) throws IOException {

    Workbook wb = null;

    FileInputStream in = new FileInputStream(file);

    if (file.getName().endsWith(EXCEL_XLS)) { // Excel 2003

    wb = new HSSFWorkbook(in);

    } else if (file.getName().endsWith(EXCEL_XLSX)) { // Excel 2007/2010

    wb = new XSSFWorkbook(in);

    return wb;

    * @param args

    public static void main(String[] args) {

    List> mapList = new ArrayList>();

    for(int k=0; k<100;k++){

    Map map = new HashMap();

    map.put("title_id", "title_id"+k);

    map.put("title_name", "title_name"+k);

    map.put("title_name_en", "title_name_en"+k);

    mapList.add(map);

    writeExcel(mapList, mapList.size(), "D:/360bizhi/readExcel.xlsx");

    5运行main进行测试,查看写入结果

    写入结果和预期是一样的,说明写入成功

    请大家多多关注我的头条号,谢谢大家

  • ?

    JavaEE——Java导出Excel表

    紫嫣

    展开

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

    Java导出Excel表

    首先去maven里面下载 upload 1.3.3 版本 下载到你的maven工程里面

    上传文件必须是post方法

    上传文件同时有表单值的话 你用request.getParame是获得不到的

    Java导出Excel表

    去maven工厂下载 POI jar包

  • ?

    一行代码完成Java的Excel读写

    柏浩宇

    展开

    前段时间在 github 上发现了阿里的 EasyExcel 项目,觉得挺不错的,就写了一个简单的方法封装,做到只用一个函数就完成 Excel 的导入或者导。刚好前段时间更新修复了一些 BUG,就把我的这个封装分享出来,请多多指教。

    附上源码:

    https://github/HowieYuan/easyexcel-method-encapsulation

    EasyExcel

    EasyExcel 的 github 地址:

    https://github/alibaba/easyexcel

    EasyExcel 的官方介绍:

    可以看到 EasyExcel 最大的特点就是使用内存少,当然现在它的功能还比较简单,能够面对的复杂场景比较少,不过基本的读写完全可以满足。

    一. 依赖

    首先是添加该项目的依赖,目前的版本是 1.0.2。

    com.alibabaeasyexcel1.0.2

    二. 需要的类

    1. ExcelUtil

    工具类,可以直接调用该工具类的方法完成 Excel 的读或者写。

    2. ExcelListener

    监听类,可以根据需要与自己的情况,自定义处理获取到的数据,我这里只是简单地把数据添加到一个 List 里面。

    publicclassExcelListenerextendsAnalysisEventListener {//自定义用于暂时存储data。//可以通过实例获取该值private List datas = new ArrayList<>();/** * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据 */ @Overridepublicvoidinvoke(Object object, AnalysisContext context) {//数据存储到list,供批量处理,或后续自己业务逻辑处理。 datas.add(object);//根据自己业务做处理 doSomething(object); }privatevoiddoSomething(Object object) { } @OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context) {/* datas.clear(); 解析结束销毁不用的资源 */ }public List getDatas() {return datas; }publicvoidsetDatas(List datas) {this.datas = datas; }}

    3. ExcelWriterFactroy

    用于导出多个 sheet 的 Excel,通过多次调用 write 方法写入多个 sheet。

    4. ExcelException

    捕获相关 Exception。

    三. 读取 Excel

    读取 Excel 时只需要调用 ExcelUtil.readExcel() 方法:

    @RequestMapping(value = "readExcel", method = RequestMethod.POST)public Object readExcel(MultipartFile excel) {return ExcelUtil.readExcel(excel, new ImportInfo());}

    其中 excel 是 MultipartFile 类型的文件对象,而 new ImportInfo() 是该 Excel 所映射的实体对象,需要继承 BaseRowModel 类,如:

    publicclass ImportInfo extends BaseRowModel {@ExcelProperty(index = 0)privateString name;@ExcelProperty(index = 1)privateString age;@ExcelProperty(index = 2)privateString email;/* 作为 excel 的模型映射,需要 setter 方法 */publicString getName() {return name; }publicvoid setName(String name) {this.name = name; }publicString getAge() {return age; }publicvoid setAge(String age) {this.age = age; }publicString getEmail() {return email; }publicvoid setEmail(String email) {this.email = email; }}

    作为映射实体类,通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列,同时不可缺少 setter 方法。

    四. 导出 Excel

    1. 导出的 Excel 只拥有一个 sheet

    只需要调用 ExcelUtil.writeExcelWithSheets() 方法:

    @RequestMapping(value = "writeExcel", method = RequestMethod.GET)publicvoidwriteExcel(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName = "第一个 sheet"; ExcelUtil.writeExcel(response, list, fileName, sheetName, new ExportInfo()); }

    fileName,sheetName 分别是导出文件的文件名和 sheet 名,new ExportInfo() 为导出数据的映射实体对象,list 为导出数据。

    对于映射实体类,可以根据需要通过 @ExcelProperty 注解自定义表头,当然同样需要继承 BaseRowModel 类,如:

    publicclass ExportInfo extends BaseRowModel {@ExcelProperty(value = "姓名" ,index = 0)privateString name;@ExcelProperty(value = "年龄",index = 1)privateString age;@ExcelProperty(value = "邮箱",index = 2)privateString email;@ExcelProperty(value = "地址",index = 3)privateString address;}

    value 为列名,index 为列的序号。

    如果需要复杂一点,可以实现如下图的效果:

    对应的实体类写法如下:

    publicclass MultiLineHeadExcelModel extends BaseRowModel {@ExcelProperty(value = {"表头1","表头1","表头31"},index = 0)privateString p1;@ExcelProperty(value = {"表头1","表头1","表头32"},index = 1)privateString p2;@ExcelProperty(value = {"表头3","表头3","表头3"},index = 2)private int p3;@ExcelProperty(value = {"表头4","表头4","表头4"},index = 3)private long p4;@ExcelProperty(value = {"表头5","表头51","表头52"},index = 4)privateString p5;@ExcelProperty(value = {"表头6","表头61","表头611"},index = 5)privateString p6;@ExcelProperty(value = {"表头6","表头61","表头612"},index = 6)privateString p7;@ExcelProperty(value = {"表头6","表头62","表头621"},index = 7)privateString p8;@ExcelProperty(value = {"表头6","表头62","表头622"},index = 8)privateString p9;}

    2. 导出的 Excel 拥有多个 sheet

    调用 ExcelUtil.writeExcelWithSheets() 处理第一个 sheet,之后调用 write() 方法依次处理之后的 sheet,最后使用 finish() 方法结束。

    publicvoidwriteExcelWithSheets(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName1 = "第一个 sheet"; String sheetName2 = "第二个 sheet"; String sheetName3 = "第三个 sheet"; ExcelUtil.writeExcelWithSheets(response, list, fileName, sheetName1, new ExportInfo()) .write(list, sheetName2, new ExportInfo()) .write(list, sheetName3, new ExportInfo()) .finish();}

    write 方法的参数为当前 sheet 的 list 数据,当前 sheet 名以及对应的映射类。

    扩展阅读

    代码整洁之道|最佳实践小结

    Javascript 将 HTML 页面生成 PDF 并下载

    Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    来源:https://juejin.im/post/5ba320546fb9a05d0b14304b

    文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除

  • ?

    Java使用Apache POI导出Excel

    比翼飞

    展开

    一.POI简单介绍

    Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能

    HSSF 提供读写Microsoft Excel XLS格式档案的功能。

    XSSF 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

    HWPF 提供读写Microsoft Word DOC格式档案的功能。

    HSLF 提供读写Microsoft PowerPoint格式档案的功能。

    HDGF 提供读Microsoft Visio格式档案的功能。

    HPBF 提供读Microsoft Publisher格式档案的功能。

    HSMF 提供读Microsoft Outlook格式档案的功能。

    二.操作步骤

    1.环境配置:导入jar包

    org.apache.poi poi 3.16

    2.创建一个Excel工作簿

    @Test public void test() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    3.创建一个sheet页

    @Test public void sheet() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 wb.createSheet("第一个sheet页"); wb.createSheet("第二个sheet页"); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    sheet页

    4.创建行和列

    @Test public void row() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("学生信息sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell =null; for(int i = 0 ;i<5;i++){ row.createCell(i).setCellValue("写入信息:单元格内容"+i); } //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    5.创建一个时间样式到Excel

    @Test public void date() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("时间sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell = row.createCell(0); cell.setCellValue(new Date()); CreationHelper creationHelper = wb.getCreationHelper(); //设置单元格样式 CellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss")); cell = row.createCell(1); cell.setCellValue(new Date()); //设置日期样式 cell.setCellStyle(cellStyle); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    6.单元格对其方式及行高

    @Test public void style() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(0); //设置行高 row.setHeightInPoints(30); //创建一个单元格 createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM); createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER); createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); } /** * 创建一个单元格设置对应的对其方式 * @param workbook 工作蒲 * @param row 行 * @param column 列 */ private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){ Cell cell = row.createCell(column);//创建单元格 cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值 CellStyle cellStyle = workbook.createCellStyle();//创建样式 cellStyle.setAlignment(halign);//设置单元格水平方向对其方式 cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式 cell.setCellStyle(cellStyle); }

    合并单元格

    @Test public void test1() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(1); //设置行高 row.setHeightInPoints(30); //创建一个单元格 Cell cell = row.createCell(1); cell.setCellValue("合并单元格"); //合并单元格(起始行,结束行,起始列,结束列) sheet.addMergedRegion(new CellRangeAddress(1,2,1,2)); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

  • ?

    Java实现文件批量导入导出实例(兼容xls,xlsx)

    以晴

    展开

    1、介绍

    java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。

    目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。

    2、POI使用详解

    2.1 什么是Apache POI?

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    2.2 POI的jar包导入

    本次讲解使用maven工程,jar包版本使用poi-3.14和poi-ooxml-3.14。目前最新的版本是3.16。因为3.15以后相关api有更新,部分操作可能不一样,大家注意下。

    2.3 POI的API讲解

    2.3.1 结构

    HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。HWPF - 提供读写Microsoft Word格式档案的功能。HSLF - 提供读写Microsoft PowerPoint格式档案的功能。HDGF - 提供读写Microsoft Visio格式档案的功能。

    2.3.2 对象

    本文主要介绍HSSF和XSSF两种组件,简单的讲HSSF用来操作Office 2007版本前excel.xls文件,XSSF用来操作Office 2007版本后的excel.xlsx文件,注意二者的后缀是不一样的。

    HSSF在org.apache.poi.hssf.usermodel包中。它实现了Workbook 接口,用于Excel文件中的.xls格式

    常用组件:HSSFWorkbook excel的文档对象HSSFSheet excel的表单HSSFRow excel的行HSSFCell excel的格子单元HSSFFont excel字体HSSFDataFormat 日期格式HSSFHeader sheet头HSSFFooter sheet尾(只有打印的时候才能看到效果)样式:HSSFCellStyle cell样式辅助操作包括:HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表

    XSSF在org.apache.xssf.usemodel包,并实现Workbook接口,用于Excel文件中的.xlsx格式

    常用组件:XSSFWorkbook excel的文档对象XSSFSheet excel的表单XSSFRow excel的行XSSFCell excel的格子单元XSSFFont excel字体XSSFDataFormat 日期格式和HSSF类似;

    2.3.3 两个组件共同的字段类型描述

    其实两个组件就是针对excel的两种格式,大部分的操作都是相同的。

    2.3.4 操作步骤

    以HSSF为例,XSSF操作相同。

    首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

    3、代码操作

    3.1 效果图

    惯例,贴代码前先看效果图

    Excel文件两种格式各一个:

    代码结构:

    导入后:(我导入了两遍,没做校验)

    导出效果:

    3.2 代码详解

    这里我以Spring+SpringMVC+Mybatis为基础

    Controller:

    Service

    3.3 导出文件api补充

    大家可以看到上面service的代码只是最基本的导出。

    在实际应用中导出的Excel文件往往需要阅读和打印的,这就需要对输出的Excel文档进行排版和样式的设置,主要操作有合并单元格、设置单元格样式、设置字体样式等。

    3.3.1 单元格合并

    使用HSSFSheet的addMergedRegion()方法

    参数CellRangeAddress 表示合并的区域,构造方法如下:依次表示起始行,截至行,起始列, 截至列

    3.3.2 设置单元格的行高和列宽

    3.3.3 设置单元格样式

    1、创建HSSFCellStyle

    2、设置样式

    3、将样式应用于单元格

    3.3.4设置字体样式

    1、创建HSSFFont对象(调用HSSFWorkbook 的createFont方法)

    2、设置字体各种样式

    3、将字体设置到单元格样式

    大家可以看出用poi导出文件还是比较麻烦的,等下次在为大家介绍下irport的方法。

    导出的api基本上就是这些,最后也希望上文对大家能有所帮助。

    学习Java的同学注意了!!!学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群495273252,我们一起学Java!

  • ?

    SpreadJS ExcelIO实现服务器端Excel导入导出

    南霜

    展开

    SpreadJS在V10版本后推出了纯前端的Excel导入导出,这个功能可以很方便的实现客户端的Excel导入导出,但是如果用户需要导入导出到浏览器端又该怎么办呢?其实纯前端的Excel导入导出同样可以实现服务器端的Excel导入导出。下面让我们来看一下是如何实现的:

    本示例的后端使用JAVA语言,通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:

    从服务器端导入Excel:

    这部分使用纯前端实现,纯前端实现有一个弊端就是,浏览器没有权限访问服务器上工程目录以外的路径,所以需要将服务器端的Excel放入工程目录下。然后下载到前端直接打开,核心代码如下:

    导出Excel保存至服务器端:

    这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。

    这里有以下需要注意的地方:

    formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:

    之后js中只需要初始化一个该form的formdata实例即可:

    var fd = new FormData(document.forms.namedItem("myform"));

    以上就是核心的部分代码以及原理。

    了解更多

    SpreadJS是 Spread 表格开发系列产品之一。该产品是葡萄城公司出品的一系列功能和 Excel 类似的表格工具,支持桌面、Web 和移动平台开发,用于在应用系统中实现 Excel 导入导出、表格数据录入和编辑等交互功能,并提供灵活的定制能力和丰富的数据可视化效果。

    Spread 是目前市面上最接近 Excel 的表格开发工具,无论是界面、函数还是布局,都与 Excel 高度接近,正被华为、东软、中国平安、河海大学、中通快递、普华永道、魔方网表、思源软件等企业应用于项目开发中。

    除了纯前端的SpreadJS,该系列产品还包括 .NET 平台可用的Spread Studio,和服务器端批量操作Excel的Spread表格组件,敬请登陆官网了解更多:http://gcpowertools/

    关于葡萄城

    葡萄城成立于1980年,是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。葡萄城于1988年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

  • java excel导入导出