字节流生成word文档

将字节流直接写入word

除了txt这种简单的文件(即可用字节流,也可用字符流--不需要专门的这种文件的java类),其他类型的文件word,execl,zip等都可以直接写入字节流(写入空的类型文件中,先要建立一个这样的空类型文件),拿出字节流来(用这种结构的

这种文件java类去获取内部流),由于处txt这种类型的文件外,其他复杂类型的文件都有内部结构描述,不可用字符流,只能用字节流一次性写入

new  file 只能new出文件夹,要形成特殊类型的文件 还需要将此文件夹转成流,最后用对应文件类型的java工具类转化成这种类型的文件

   XWPFDocument document = new XWPFDocument();

            // Write the Document in file system

            FileOutputStream out1 = new FileOutputStream(new File("C:\\Users\\yy\\hb1009\\simple1.doc"));

            document.write(out1);

            out1.close();

            System.out.println("createdocument.docx written successully");

当然在java中通过对应工具类直接遍历操作文件对象此种类型的文件

 1,字符串可以转化成流,文件也可转化成流

 2,对于流无论read,write操作的对象都是左边的对象

 3,对应文件类型的java工具类转化成这种类型的文件

 4,一般的流 output是最终拼接,用来循环的btye[] 是缓存载体,socket这种有业务特性的--- 缓冲区就是起到临时存储拼接的作用  io包=包头(包的长度)+包体  ,先读取包头,然后在缓存区拼接相应长度的内容,之后读出---处理粘包

 5,字节和输入/出流的关系是可以取出,写入文件和输入/出流的关系是文件进入输入/出就变成了字节,从流中可以取出

6,普通的对象通过相应的步骤可以一步一步转化成字符流,字节流

out 时流的最终写入点,input时流的来源

相应结构的reader(扫描器)从input(需要被复印的原件)中读,相应的writer(打印机)写入out(放好的白纸)最终需要关闭扫描器,打印机

7,wr.flush();一般打印机会在关闭之前flush,就是马上提交打印内容,否则容易出现打印完成,没有东西出来

8,不同类型的文件需要用相应类型的打印机(写类),传输的时候只要传入出来的纸(out),out经过相应类型的打印机自然有对应类型的结构

/**

* 助贷放款或结清证明生成

* @param request

* @param errors

* @return

* @throws Exception

*/

@RequestMapping("tYZDLnOrClrCtfyGen")

public JSONObject TYZDLnOrClrCtfyGen(@Valid @RequestBody ApiRequest request,Errors errors) throws Exception {

LOGGER.info("助贷放款或结清证明生成,参数:[{}]",JSONObject.toJSONString(request));

JSONObject jsonObject=new JSONObject();

String dataStr = String.valueOf(request.getData());

JSONObject dataObject = JSONObject.parseObject(dataStr);

request.setData(dataObject);

JSONObject jsonObjRes=  facadeSend(request,errors,TradeEnum.S0025.getTcode());

SftpUtils sftp = null;

try {

String jsonObjResData=  jsonObjRes.getString("data");

//String jsonObjResData=  jsonObjRes.getString("rspData");

JSONObject jsonRes=null;

String pathImg="";

String msg="";

if(jsonObjResData!=null ){

jsonRes =(JSONObject)JSONObject.parse(jsonObjResData) ;

JSONObject jsonResFile =(JSONObject)JSONObject.parse(jsonRes.getString("rspData"));

if(CodeEnum.CODE_000000.getCode().equals(jsonRes.getString("returnCode"))){

pathImg =jsonResFile.get("FILE_PATH")+"";

pathImg =pathImg+"/"+jsonResFile.get("FILE_NAME")+"";

}

msg=jsonRes.getString("returnMsg");

}

pathImg="/file/1005/004_20181105163758_EDHT20180815003420002.doc";

if(!"".equals(pathImg)){

sftp =new SftpUtils(jqulr, jqport, jquserName, jqpassWord);

String imgData="";

//=sftp.readFileNotmove(pathImg);

byte[] byteArray = sftp.getFileToByte(pathImg);

imgData = new String(byteArray, "UTF-8");

jsonObject.put("code", CodeEnum.CODE_0000.getCode());

jsonObject.put("msg", CodeEnum.CODE_0000.getMsg());

jsonObject.put("data",byteArray);-----------------------------------------------直接返回字节

}else{

jsonObject.put("code", CodeEnum.CODE_999999.getCode());

jsonObject.put("msg", msg);

}

} catch (Exception e) {

jsonObject.put("code", CodeEnum.CODE_999999.getCode());

jsonObject.put("msg", CodeEnum.CODE_999999.getMsg());

e.printStackTrace();

}

return jsonObject;

}

    @Test

    public void zipTest1 () throws IOException {

        File file = new File("C:\\Users\\yy\\tst\\20271019.zip");

        Map<String, Object> reqMap = new HashMap<String, Object>();

        reqMap.put("chnCode", "HOUBANK");

        reqMap.put("bankCode", "SANXIANG");

        reqMap.put("data", null);

        String s1 = HttpClientUtil.httpJsonPost("http://localhost:9999/HOUBANKAPI/tYZDLnOrClrCtfyGen", JSON.toJSONString(reqMap));

        BASE64Decoder decoder = new BASE64Decoder();

        JSONObject jsonObject = JSON.parseObject(s1);

        byte[]  myJson=  new String(decoder.decodeBuffer(jsonObject.get("data").toString()), "UTF-8").getBytes();

        byte2file("",myJson);

    }

    public  void byte2file(String path,byte[] data) {

        try {

            XWPFDocument document = new XWPFDocument();

            // Write the Document in file system

            FileOutputStream out1 = new FileOutputStream(new File("C:\\Users\\yy\\hb1009\\simple1.doc"));

            document.write(out1);

            out1.close();

            System.out.println("createdocument.docx written successully");

            File tempDoc = new File("C:\\Users\\yy\\hb1009", "simple1.doc");

            BufferedOutputStream out = null;

            XWPFDocument temp = null;

            temp = new XWPFDocument(new BufferedInputStream(new FileInputStream(tempDoc)));

            out = new BufferedOutputStream(new FileOutputStream(tempDoc));

            out.write(data);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>3.17</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml-schemas</artifactId>

<version>3.17</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.17</version>

</dependency>

相关推荐