HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0419
名無しExcelデータについて4解決


名無し

リンク

2012/4/19(Thu) 16:08:08|NO.46152

こんにちは。
自前で色々と調べたのですが、解決出来ず。。
皆様の知識を御借りしたいです。

現在Excelファイルからデータを読み取り
データを配列に格納した後に、
別のExcelファイルへ書き込むというプログラムを
作成しています。
読み取りも書き込みもその他の機能も
完成しているのですが、一つの問題に長らく悩まされています。

その問題がExcelから文字列データ(漢字)を読み取った際、
ある文字が?に置き換わってしまうというものです。
原因も特定しており、HSPのエディタが文字コードをSJISのみに
しか対応していない事により、常用漢字でない文字データ
(文字コードがunicode)を?に変換してしまっているようなのです。

検索しても、meswのようなHSP上にUnicodeの文字を表示させる
ようなものばかりでして。。
標準命令のcnvstowやcnvwtosなども試してみましたが、
受け取った時点で?に変換してしまうようで。。

自己解決が不可能と判断orz

求めている事は、
1. Excelよりデータを読み取る際にUnicodeを保持して、
そのまま書き込む方法
2. Excelよりデータを読み取る際にUnicode⇒SJISへ、
書き込む際にSJIS⇒Unicodeへ変換する方法
です。

宜しくお願い致します。
長文失礼しました。



この記事に返信する


@key

リンク

2012/4/19(Thu) 23:01:45|NO.46164

unicodeはmacなどの他機種では見れなかったりフォント別にたまに違ったりとあまり好かれるものではありません
解決にはなっていないのですが、unicodeは使わないほうがいいと思います

ついでに言うと普通のよく使う漢字はshift_jisに入っています
氏名によくある旧文字は基本unicodeです



名無し

リンク

2012/4/20(Fri) 09:09:00|NO.46169

@key様、返信ありがとうございます。

ここが問題でして、現在扱っている氏名の
元データで、一文字だけ旧字が存在するのです。
(JIS第四標準に位置するものだそうです)

どうしても使用しなければならない為、
もし解決策等あれば、と。。。



(´ω`)

リンク

2012/4/20(Fri) 10:46:54|NO.46170

現在のExcelファイルからの読み込み方がよくわかりませんが、一旦xlsファイルを
csvファイルで出力しておいてそれをバイナリとして読み込めば、その問題は回避
できるように思いました。

大量にxlsファイルがあるなら、フリーのコンバータも出回っていますのでそれを
利用されるのが楽でいいかと。(´ω`)



名無し

リンク

2012/4/20(Fri) 11:06:39|NO.46172

(´ω`)様、返信ありがとうございます。

現在のxlsデータの読み取りは、
おにたま様のExcelデータ取得サンプルをほぼそのままの
形で使用しております。

一応張り付けますね。

**********************************


newcom xlApp, "Excel.Application" xlApp("Visible") = 0; Excelウィンドウは非表示 xlApp("DisplayAlerts") = 0; 警告メッセージを表示させない xlBooks = xlApp("Workbooks") ; Workbooks コレクション取得 xlBooks->"Open" fname ; 指定ファイルを開く xlBook = xlBooks("Item",myname) ; book取得 xlSheet = xlBook("Worksheets",sheet_name) ; Sheet取得 Range = xlSheet("Range","A1") xlCurReg = Range("CurrentRegion") Rows = xlCurReg("Rows") Columns = xlCurReg("Columns") sy = 0+Rows("Count") ; 縦の項目数を取得 sx = 0+Columns("Count") ; 横の項目数を取得 //配列にデータを格納 i = 0 : j = 0 repeat sx:x=cnt repeat sy:y=cnt xlCur = Range("Offset",y,x) ; X,Yのセルを取得 data = xlCur("Text") ; 内容テキストを取り出す if i != 0 : { if j == 0 : sdim配列変数 = data if j == 1 : sdim配列変数 = data        (以下同様の処理) } i++ loop i = 0 : j++ loop

**********************************

そうですね・・・csvファイルで出力する手法で
考え直してみます。

一旦解決とします。
もし読み取りの解決案を下さる神様
いらっしゃいましたr(
・・・長々と失礼致しました。

@key様、(´ω`)様
ありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.