我正在尝试以编程方式修改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) 我正在尝试使用我的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)