• ベストアンサー

Excel内のデータに直接書き込むってやったことある人いますか?しかもバイナリで!!

とあるツール(回路シミュレータSPICE)の出力データから1クリックでエクセルファイルに変換するツールを考えています。今のところデータ整理作業としては、 SPICE出力データ(倍精度バイナリデータ)=>Bin to 10進ASCII変換=>必要なデータを抽出=>エクセルファイルにコピペ=>保存(倍精度バイナリデータ) という感じで面倒かつ単調な作業が日々の暮らしになっています。でExcelの中身をバイナリエディタで眺めてみたところデータ管理はどうやらSPICE出力データと同じ倍精度バイナリデータで管理されているようでした。そこで、 SPICE出力データ(倍精度バイナリデータ)=>必要なデータを抽出=>エクセルファイルにコピペ(倍精度バイナリデータ)=>保存 てなことをやれないかと思ったわけです。しかしExcelファイル中身のフォーマットがどうなっているのか(セルの位置とかの管理)よくわからないのですが、何かいい方法とか資料とかはないでしょうか?分かる方いましたらよろしくお願いします。

noname#69877
noname#69877

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 資料としては、以下のようなものがあります。 http://sc.openoffice.org/servlets/NewsItemView?newsItemID=2 Excel file format description started Java系 Hacking HSSF プロジェクト http://poi.terra-intl.com/hssf/hacking-hssf.html 書籍 Microsoft Excel 97 Developer's Kit http://www.amazon.com/Microsoft-Excel-97-Developers-Kit/dp/1572314982 BIFF8 のみ

noname#69877
質問者

お礼

あっ!!これこれこれですよ!!欲しかったのは。 ほんとにありがとうございました。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

> Excelファイル中身のフォーマットがどうなっているのか ご質問の「やりたいこと」とは無関係ではないかと・・・^^; 単純に OPEN ステートメントのバイナリモードでファイルを開くなど して、バイト配列にデータを読み込み、必要なデータを抽出してから 結果をセルに書き込んでいくだけです。 VBA で対応できると思いますよ。 とりあえず、16 進ダンプをセルに展開するプログラムを書いてみては?

noname#69877
質問者

お礼

このやり方だとちょっとデータ量が多くてパソコンがかわいそうなので…。 回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

おせっかいなことを言います。私は数年ほぼ毎日このエクセルのカテを見てます。 理系の質問には回答のつきが悪い。コンピュタのプログラマはお金や人や物の在庫のシステムを扱う人口が多いからだと思います。ですから、偶然、理工系で実験などしている学院生などが目に留めてくれればよいが、日中1日に50-100件の勉強にもならないエクセルの質問を読んでおれないはずです。 ーー ですから、回答候補者に理系の装置やソフトなどの言葉で拒否反応を抱かせないように、省いて判りやすく質問することです。 まず(1)原データ(SPICEの出力データをストレートに保存したら どういう風なファイルになる?) (2)それを変換したデータ(できるだけ文字列の。それは可能か?)エクセルのセルに区切って、入れるとすると、どういう単位になるか? (3)エクセルへ移行 (4)エクセルでどういう表示形式(表示内容)データ(0、1の2進数、16進、10進、またはその他?)を見て考えたいのか を1つずつ、書くことです。その他はあっさりと記述のこと。 どういう風に(1)を作ったとかはたぶん関係ないのです。 ただし(1)について特別に知りたいことは、CSVファイルに落とせるかどうかです。それができると、非常に易しくなるからです。その中身の例を数レコード分挙げてください。 CSVファイルに落とせれば(2)(3)は簡単で、みんな知ってます。 (4)はデータ保存だけのことでなく、どういう風に画面のエクセルのセル内で見えるかが大事なんでしょう。

noname#69877
質問者

お礼

回答ありがとうございました。

  • k-pix
  • ベストアンサー率51% (50/98)
回答No.1

標題の件の経験はありませんが、下記サイト(少々、情報が古いです。)が参考になるかもしれません。 http://homepage3.nifty.com/hippo2000/perltips/Spreadsheet/WriteExcel.htm#THE_EXCEL_BINARY_FORMAT 現在では、「2007 Office System: Microsoft SDK for Open XML Formats」を利用するのかもしれません(詳しくは知りませんので悪しからず。)。 http://msdn2.microsoft.com/ja-jp/library/bb448854.aspx 質問を拝見しまして、 ・Excel VBAでSPICE出力データの読み込み という代替案ではダメなのかな?と思いました。 「SPICE出力データ読み込みおよびシート内へのデータの配置」マクロをAddIn化しておけば、操作性も上がるのはないかと思います。 ご参考まで。

noname#69877
質問者

お礼

そうですねえ。まあデータ量が多いのでバイナリのままコピペでいけるならその方が速いかと思ったんですが…。 回答ありがとうございました。

関連するQ&A

  • テキストファイルのデータからバイナリを作りたい

    現在、テキストデータとしてCSVファイル1つあたり8バイトのデータが1000個ほどのデータが書かれているファイルがあります。このデータをバイナリファイルへ数値も変換して行きたいと思っています。 たとえば1個目のデータ”12345678”というテキストデータをバイナリの"12345678"に変換したらそれを0x00番地に並べて、そして2個目のデータ”87654321”というデータをバイナリにしたらそれを0x90離れた場所に置いていき、それを1000回繰り返して、結果をバイナリファイルで出力したいのですが、何か簡単にできるフリーソフトなどありませんでしょうか? また、プログラムとかでも簡単にできるのならそうしたいのですが、どうしたらよいか教えていただけないでしょうか?

  • EXCEL VBAで、バイナリデータの書き込み及び読み込みについて

    御世話になります。仕事でいきずまってしまったので助けて下さい。 今Excelvbaで、あるExcelファイルのデータを読み込んで、バイナリファイルとして出力するソフトを作ってるのですが、内部的にデータを構造体に一度格納して、一気にバイナリファイルに書き込む、もしくはその逆(バイナリファイルを読み込んで、一気に構造体に入れる)にはどうすればよいのでしょうか?apiのfailopenやvcを使えば出来るらしいのですがよくわかりません。vbaでは不可能なのでしょうか?どなたかご教授下さい。

  • バイナリファイルなのですが・・・。

    研究用のデータを受け取ったのですが、テキストではなくバイナリファイルでもらいました。データを取得した人によると、↓にある装置を使って時系列データをintel86系バイナリフォーマットで記録したと言っていました。 http://www.sonysms.co.jp/j/products/datarecorder/pdf/SONY_PCscan3_jp.pdf どうにかしてこのバイナリファイルをテキストに変換して、データを取得したいのですが、どうしたらよいのでしょうか? ネットにあるバイナリ→テキスト変換ツールを使いましたが、16進数の数字が羅列されるだけで、エクセルなどで読めるデータ形式にはなりませんでした。

  • C#でバイナリデータをテキストフォームへ表示させるには?

    C#でバイナリデータをテキストフォームへ表示させるには? C#でバイナリファイルをテキストへ変換するツールを作成しています。 バイナリデータを配列へ格納し、その配列をテキスト変換してテキストフォームへ出力させるという処理を作成したいのですが、どうすれば良いのかどうしてもわかりません。 どのようなコードをどのようにして書けばよいのか、ご教示いただけないでしょうか。 よろしくお願いします。 (ちなみにC#を始めて1週間ほどです)

  • この方法でバイナリデータが読めるのでしょうか

    あるプログラムでバイナリ出力しているファイルがあります。これを単純にfread()で読み込んで、今度はfprintf()で出力すればどうなりますか?やりたいことは、バイナリ出力されたファイルをテキストファイルに変換したいのですが、この方法で、バイナリファイルが読めるでしょうか? ちなみに、読みたいバイナリファイルは、fwrite()で書き出したファイルです。 あと、「バイナリファイルです」と言って貰ったファイルを、windowsのテキストエディタなどで開くと、appleなどの通常のアルファベットの単語と、あとは訳のわからないものが見えるのですが、これってバイナリファイルじゃないですよね?appleなどと書いてあるのですから。 間違えていましたら、訂正お願いします。

  • バイナリファイルの編集

    stirling,bzなどのエディタを用いて、バイナリファイルを編集しようとしています。 テキスト(a.txt)のデータをバイナリファイルにコピペしようとしたのですが・・・ テキストで「ff ff ff ff」と書いてあったデータが、バイナリファイルにコピペすると「4646~」というように変換されてしまいました。 バイナリファイルでも「ff ff ff ff」とコピーしたい場合はどのようにすれば良いのでしょうか?

  • バイナリーデータをCSV変換して元に戻す方法?

    あるバイナリーデータ(.WAVファイル)があります。 このファイルをCSV変換することはできました。 その後、CSVデータ上で値を変換し、もとのWAVファイルに直したいのですが、そういった作業は簡単にできるのでしょうか? この作業の場合、fwrite関数を用いて、バイナリーデータとしてwavファイルに書き込んでいくだけで良いのでしょうか? わかるかたがいましたら教えていただけないでしょうか? よろしくお願いします。

  • VBAを使って、一部バイナリデータを読み書き

    VBAを使って、一部バイナリデータを読み書きする方法 を教えてください。 あるファイルが1行目から30行目までが普通のASCII形式でデータが書き込まれており、 31行目以降はバイナリデータとなっています。 また、30行目にheader endと書かれています。 このデータを30行目までは文字列データとして抽出し、 31行目以降はバイナリデータとして抽出して、 少し内容を書き換えてから、最初と同様に 30行目までをASCII、31行目以降をバイナリデータとして出力したいのですが どのようにすれば良いですか? http://homepage2.nifty.com/kasayan/vba/binary.htm http://hanatyan.sakura.ne.jp/vbhlp/Binary.htm バイナリデータの読み込み方は上記のページに書かれてあるのですが いずれも、ファイルをまるごとバイナリ形式として読み込むもので 一部だけバイナリとして読み込むことはできないようです。 どなたかどうすれば良いか教えてください。

  • バイナリファイルからの文字列抽出

    バイナリファイルをCSVに変換するツールがございます。 CSV変換した後の文字列は、"日付" "数字"となっています。 今回、問題となっておりますのは、 バイナリファイルのサイズが大きく CSV変換に時間がかかってしまいます。 少しでもバイナリファイルのサイズを小さくするべく、 バイナリファイルから特定の"日付"を 抽出しようと考えておりますが、 可能でしょうか? また、その手法をご教授ください。 OSはWINDOWSです。 よろしくお願いします。

  • javaバイナリ変換したデータのファイル出力

    現在、 String test_st = "0123456789abcdef"; というデータを byte[] bytes = test_st.getBytes("UTF-8"); このコードでバイナリ変換したのですが、このbytesに格納したバイナリデータたバイナリファイルとして出力したいのですが、どのようにしたらよいかご教授よろしくお願い致します。 BinaryFileWriter writer = new BinaryFileWriter(); このようなコードで出力できるとのサンプルもあったのですが、うまくいきません。 どうぞ、よろしくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう