小编jne*_*ewt的帖子

xlsx的压缩方法,带7z

我正在尝试以编程方式修改excel文件(xlsx).我可以成功解压缩,根据需要修改xml,然后重新压缩.但是,每次打开excel时都会收到警告,即使它确实读取了文件.我认为错误是由于使用的压缩方法.这是我能得到的最接近的一个例子:

解压缩

7z x original.xlsx -o./decomp_xlsx
Run Code Online (Sandbox Code Playgroud)

..做一些东西..

压缩

7z a -tzip new ./decomp_xlsx/*
Run Code Online (Sandbox Code Playgroud)

改名

mv ./new.zip ./new.xlsx
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:Excel在'new.xlsx'中找到了不可读的内容.你想恢复这个工作簿的内容吗?如果您信任此工作簿的来源,请单击"是".

来自ECMA-376-2 Office Open格式第2部分(打包约定)支持的压缩算法是DEFLATE,如.ZIP规范中所述.包实现者不得使用除DEFLATE之外的任何压缩算法.

那么,我需要在7z或其他Linux兼容程序中使用哪些开关才能在没有警告的情况下完成工作?我已经尝试删除-tzip并使用-m0 = COPY,但excel甚至无法从那个恢复.

所以这是zip程序和zipinfo的结果.我猜我不会找到一个工具来做这个,除了下面提供的工具,所以我要奖励那个答案,看看我是否可以找人翻译成python进行测试.我不确定它是否处理了4.5/3.0,然后b-/tx或defS/defF之间的差异.

$ zipinfo original.xlsx
Archive:  original.xlsx
Zip file size: 228039 bytes, number of entries: 20
-rw----     4.5 fat     1969 b- defS 80-Jan-01 00:00 [Content_Types].xml
-rw----     4.5 fat      588 b- defS 80-Jan-01 00:00 _rels/.rels
-rw----     4.5 fat     1408 b- defS 80-Jan-01 00:00 xl/_rels/workbook.xml.rels
-rw----     4.5 fat      908 b- defS 80-Jan-01 00:00 xl/workbook.xml
-rw----     4.5 fat    35772 b- …
Run Code Online (Sandbox Code Playgroud)

linux compression zip xlsx

7
推荐指数
1
解决办法
4237
查看次数

在Nexus 4上使用Android 4.3进行蓝牙低功耗服务发现

我正在尝试使用我的nexus 4(android 4.3)的BLE模块(bluegiga BLE112).我可以连接,获取设备的名称,连接到GATT,但服务发现失败.

这是最初的gatt连接(它似乎成功运行:

dev.connectGatt(getBaseContext(), true, btGattCB);
Run Code Online (Sandbox Code Playgroud)

这是关贸总协定的回调:

private BluetoothGattCallback btGattCB = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        super.onConnectionStateChange(gatt, status, newState);
        if(newState == BluetoothProfile.STATE_CONNECTED){
            Log.i(TAG, "Gatt Connected");
            gatt.discoverServices();
        }
        else if(newState == BluetoothProfile.STATE_DISCONNECTED){
            Log.i(TAG, "Gatt Disconnected");
        }
    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status){
        Log.i(TAG,"Status onServiceDiscovered: "+status);   //status code i'm getting here is 129
        List<BluetoothGattService> btServices = gatt.getServices();//try anyway
    }
};
Run Code Online (Sandbox Code Playgroud)

这是我的日志:

09-28 12:58:37.611    4118-4130/com.jnewt.btFive I/PDU? Scan Callback
09-28 12:58:37.611    4118-4130/com.jnewt.btFive …
Run Code Online (Sandbox Code Playgroud)

android bluetooth-lowenergy nexus-4

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×1

bluetooth-lowenergy ×1

compression ×1

linux ×1

nexus-4 ×1

xlsx ×1

zip ×1