0

私が働いている場所には、情報を抽出する必要のある数百のxlsxファイル(Office 2010 Starterで作成)があります。これは1回限りの作業であるため、問題はどちらの方法が最も速いかということです。既存のツール?ソリューションのプログラミング?

情報は単なる文字列であり、フォーマットは重要ではありません。これらのファイルには顧客データが含まれています。顧客ごとに1つのファイル。そして、あなたが尋ねる前に、はい、それはばかげたシステムです-そして私たちはそれを放棄しています。現在、新しいシステムに移行しているため、既存の顧客データを新しいシステムにインポートできるCSVファイルにエクスポートする必要があります。

これを行うためのコンピュータープログラムを作成する場合、各ファイルの最初のワークシートにアクセスし、任意のセル(A1、C5など)の内容を読み取ることができる必要があります。それでおしまい。

xlsxファイルはzip形式のXMLファイルにすぎないため、1つのアプローチは、XMLファイルを解凍して解析するコードを作成することです。それは非常に時間のかかる解決策のようなにおいがするので、無料のライブラリが存在する場合はそれを使用したいと思います。

ここで役立つ可能性のある言語の中で、私はC ++とCが得意ですが、いくつかのC#、VB6、VB.NET、およびほんの少しのPythonを実行しました。

4

3 に答える 3

4

すべての Excel ファイルを 1 つのフォルダーに配置します (まだ配置していない場合)。次の手順に従います。

  1. 空白のブックを開く
  2. VBA エディターを開くAlt+F11
  3. モジュールを追加します: 挿入 --> モジュール
  4. 以下のコードをモジュールに追加します (ディレクトリ文字列を変更して、変換する Excel ファイルが存在するディレクトリを指すようにします)。
  5. いくつかのファイルをステップ実行して、期待どおりに動作していることを確認します
  6. F5すべてのファイルで実行する
  7. 古いシステムに別れを告げる

コード:

    Option Explicit

    Sub ExportAllToCSV()
        Dim Directory As String
        Dim i As Long
        Dim file As String
        Directory = "C:\workbooks\"
        i = 1

        Application.DisplayAlerts = False
        Application.ScreenUpdating = False

        ' Get the first file
        file = Dir(Directory, vbReadOnly + vbHidden + vbSystem)

        Do While file <> ""
            If Right(file, 4) = "xlsx" Then ' change to right(file ,3) = "xls" if you have xls files instead of xlsx
                Workbooks.Open Filename:=file
                ActiveWorkbook.SaveAs Filename:="C:\workbooks\file" & i & ".csv", FileFormat _
                            :=xlCSV, CreateBackup:=False
                ActiveWorkbook.Close
                i = i + 1
            End If

            ' Get the next file
            file = Dir()
        Loop

        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
于 2012-06-01T20:44:20.907 に答える
0

Excel相互運用APIを使用することをお勧めします。APIの使用方法の例はここにあります。

于 2012-06-01T16:20:59.910 に答える
0

Since you mentioned that you can use C#, there is a excellent library for Excel 2007+ files, EPPlus. Here are some examples to get you started :

  ExcelPackage ep = new ExcelPackage(new FileInfo("excelfile.xlsx"));
  // take the first sheet 
  // or you could get the Worksheet with name : ep.Workbook.Worksheets["Sheet1"]
  ExcelWorksheet ws = ep.Workbook.Worksheets[0];

  // now you can get data
  // cell data from row 3, column 2 (first row or column is 1 not 0)
  string data = ws.Cells[3, 2].Value.ToString();
  // from A5 cell
  string data1 = ws.Cells["A5"].Value.ToString();

  // you can find out how many rows are there 
  int maxRow = ws.Dimension.End.Row;
于 2012-06-01T21:14:44.497 に答える