0

Aperio と呼ばれるこの顕微鏡画像解析ソフトウェアから生成された多くの .xls ファイルを処理する必要があります (Aperio で解析した後、データを「読み取り専用」の xls 形式としてエクスポートできます。名前を付けて保存は、 Mac 上の Excel、Windows マシンでは、ファイルが保護されているため、[保存] ボタンと [名前を付けて保存] ボタンはグレー表示されます)。残念ながら、これらのファイルのヘッダーは標準の OLE2 形式ではありません。そのため、手動で Microsoft Excel にロードして .xls として 1 つずつ保存しない限り、Java API POI で取得することはできません。

ディレクトリには非常に多くのファイルがあるため、手動で名前を付けて保存するのはかなり面倒です。これらのファイルを標準の xls ファイルとして自動的に保存する Java プログラムを作成する方法はありますか? Java では不可能な場合、この状況を処理できる言語は Python でしょうか?

編集:

ファイルの 1 つを 16 進リーダーにロードしましたが、次のとおりです。09 04 06 00 07 00 10 00 00 00 5C 00 04 00 05 4D 44 41 80 00 08 00 00 00 00 00 00 00 00 00 92 00 19 00 06 00 00 000 00 00 F0 F0 FF 0 F0 F0 F0 FF 00 00 00 00 00 FF FF FF 0C 00 02 00 01 00 0D 00 02 00 64 00 0E 00 02 00 01 00 0F 00 02 00 01 00 11 00 02 00 00 00 02 00 02 0 0 00 00 2b 00 02 00 00 00 00 25 02 04 00 00 00 00 ff 00 1F 00 02 00 22 00 1E 04 0A 00 00 00 07 47 65 6E 65 72 61 6C 1E 04 04 04 00 00 00 01 30 1E 04 07000000000000004 30 2e 30 30 1e 04 08 00 00 00 00 05 23 2C 23 23 30 1E 04 0B 00 00 08 23 2C 23 23 30 2E 30 30 1E 04 18 00 00 15 23 2C 23 33 30 5F F0 5F 2E 3B 5C 2D 23 2C 23 23 30 5F F0 5F 2E 1E 04 1D 00 00 00 1A 23 2C 23 23 30 5F F0 5F 2E 3B 5B 52 65 64 5D 5C 2D 23 2C 23 23 30 5F F0 5F 2E 2E 2E 0 1E 2C 23 23 30 2E 30 30 5F F0 5F 2E 3B 5C 2D 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 1E 04 23 00 00 00 20 23 2C 2323 30 2E 30 30 5F F0 5F 2E 3B 5B 52 65 64 5D 5C 2D 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 1E 04 18 00 00 00 15 23 2C 23 23 30 2 2E 2C 23 F0 23 23 30 22 F0 2E 22 1E 04 1D 00 00 00 1A 23 2C 23 23 30 22 F0 2E 22 3B 5B 52 65 64 5D 5C 2D 23 2C 23 23 30 22 F0 2E 0 22 1E 200 2 2 1E 04 0 1E 23 30 2E 30 30 22 F0 2E 22 3B 5C 2D 23 2C 23 23 30 2E 30 30 22 F0 2E 22 1E 04 23 00 00 00 20 23 2C 23 23 30 2E 30 30 22 F0 4 2C 5 5B 22 2d 23 2c 23 23 30 2e 30 30 30 22 f0 2e 22 1e 05 00 00 00 00 00 02 30 25 1e 04 08 00 00 00 00 05 30 2e 30 30 25 1e 04 0b 00 00 00 00 08 30 2e 30 30 30 45 2b 30 1e e 04 0A 00 00 07 23 22 22 22 20 22 3f 2f 3f 1e 04 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 64 64 2 6D 6D 2F 79 79 79 79 1E 04 0C 00 00 00 00 09 09 09 09 64 64 2F 6D 6D 6D 2F 79 79 1E 04 09 00 00 00 06 64 64 2F 6D 6D 6D 1E 04 09 00 00 00 06 6D 6D 6D 2F 79 79 1E04 0E 00 00 00 0B 68 3A 6D 6D 5C 20 41 4D 2F 50 4D 1E 04 11 00 00 00 0E 68 3A 6D 6D 3A 73 73 5C 20 41 4D 2F 50 4D 1E 04 07 00 00 00 04 68 04 0a 00 00 00 07 68 3a 6d 6d 3a 73 73 1e 04 13 00 00 00 10 64 64 2f 6d 6d 2f 79 79 79 5c 20 68 3a 6d 6d 1e 04 0b 00 00 00 08 23 33 30 30 1e 04 08 00 00 00 00 05 6d 6d 3a 73 73 1e 04 04 00 00 00 01 40 1e 04 36 00 00 00 00 33 5F 2D 2A 20 23 2C 23 33 30 22 F0 2E 22 5F 2D 3B 5C 2D 2A 20 23 2C 23 23 30 22 F0 2E 22 5F 2D 3B 5F 2D 2A 20 22 2D 22 22 F0 2E 22 5F 2D 3B 5F 2D 40 5F 2D 1E 04 36 00 00 00 33 5F 2D 2A F 20 23 F 23E 5 23F 23E 203 2D 3B 5C 2D 2A 20 23 2C 23 23 30 5F F0 5F 2E 5F 2D 3B 5F 2D 2A 20 22 2D 22 5F F0 5F 2E 5F 2D 3B 5F 2D 40 5F 2D 1E 04 3E 2C 0 2 3F 00 23 23 30 2E 30 30 22 F0 2E 22 5F 2D 3B 5C 2D 2A 20 23 2C 23 23 30 2E 30 30 22 F0 2E 22 5F 2D 3B 5F 2D 2A 2022 2D 22 3F 3F 22 F0 2E 22 5F 2D 3B 5F 2D 40 5F 2D 1E 04 3E 00 00 00 3B 5F 2D 2A 20 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 5F 2C 20DB 2 3 2C 20DB 5 23 30 2E 30 30 5F F0 5F 2E 5F 2D 3B 5F 2D 2A 20 22 2D 22 3F 3F 5F F0 5F 2E 5F 2D 3B 5F 2D 40 5F 2D 31 00 14 00 A0 000 00 00 3 4 0 00 73 20 53 65 72 69 66 31 00 14 00 A0 00 00 00 0E 00 0D 4D 53 20 53 61 6E 73 20 53 65 72 69 66 31 00

4

3 に答える 3

2

Excel マクロでそれを行うことに反対ですか? VBA はあまり洗練されたものではありませんが、Excel ファイル操作に関連するすべての機能に優れています。これは、ディレクトリで .xls ファイルを検索し、新しいディレクトリを作成して、それらの .xls ファイルを新しいディレクトリに再保存するコードです。

Sub Resave_Files()

    ' Directory to search for .xls files.
    file_directory = "C:\Bobby\Temp"

    ' Create a temporary directory to save files.
    temp_directory = ActiveWorkbook.Path & "\Temp"
    If Dir(temp_directory, vbDirectory) = "" Then
         MkDir temp_directory
    End If

    ' Resave each .xls file in the temporary directory.
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(file_directory)
    For Each f1 In f.Files
        If (Right(f1.Name, Len(".xls")) = ".xls") Then
            wb_name = ActiveWorkbook.Name
            Set data_wb = Workbooks.Open(f1.Name)
            New_Name = temp_directory + "\" + Left(f1.Name, InStr    (f1.Name, ".xls") - 1) + "_new.xlsx"
            data_wb.SaveAs Filename:=New_Name
            data_wb.Close SaveChanges:=False
        End If
    Next

End Sub
于 2015-02-20T16:17:01.527 に答える