@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

.NetでExcelのWorkbooks.OpenText呼び出し時FieldInfo設定したい

1
投稿者投稿内容
durian
会議室デビュー日: 2005/05/10
投稿数: 1
投稿日時: 2005-05-10 16:05
初投稿です。

C#.Netで、ExcelのWorkbooks.OpenText()関数を
呼び出す時に、良くある例では、以下のようになっています。
コード:
Excel.Application excel;
Excel.Workbooks workBooks;
excel = new Excel.Application();
workBooks = excel.Workbooks;
workBooks._OpenText(txtFileName,
         Excel.XlPlatform.xlWindows,Missing.Value,
	Excel.XlTextParsingType.xlDelimited,
	Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
	false,true,false,true,false,false,
	Missing.Value, Missing.Value,Missing.Value, Missing.Value,
	Missing.Value);


ここで、最後の引数、FieldInfoを設定したい時は、
どうしたら良いのでしょうか???

Excelのマクロでは、以下のように設定できます。
コード:
Application.workbooks.OpenText Filename:="ファイル名.txt", _
          DataType:=XlTextParsingType.xlDelimited, _
          TextQualifier:=xlTextQualifierDoubleQuote, _
          Comma:=True, _
          FieldInfo:=Array(Array(1, xlTextFormat), _
                           Array(2, xlTextFormat), _
                           Array(3, xlTextFormat), _
                           Array(4, xlTextFormat))


このArrayに相当するものとして、以下のように試してみましたが、
無視されます。
コード:
object[] f1 = {1, Excel.xlColumnDataType.xlTextFormat};
object[] f2 = {1, Excel.xlColumnDataType.xlTextFormat};
object[] f3 = {1, Excel.xlColumnDataType.xlTextFormat};
object[] f4 = {1, Excel.xlColumnDataType.xlTextFormat};
object[] finfo = {f1, f2, f3, f4};

workBooks._OpenText(txtFileName,
	Excel.XlPlatform.xlWindows,Missing.Value,
	Excel.XlTextParsingType.xlDelimited,
	Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
	false,true,false,true,false,false,
	Missing.Value, Missing.Value,Missing.Value, Missing.Value,
	finfo);


御存知の方がいらっしゃいましたら、どうぞ、御教授下さい。
トラスタス
会議室デビュー日: 2005/10/09
投稿数: 1
投稿日時: 2005-10-09 21:17
かなり以前の投稿ですので時既に遅しかとは思いつつも
類似の箇所で苦しんで解決できましたので書き込みさせて頂きました。
VB/VB.netからではなく、ExcelVBA上での記述ですが、参考になれば。。。。。
(実際はターゲットのテキストファイルに関する各項目の情報を別テキストファイルと
して読み込んでから、下記抜粋のサンプル・コードを実行しますので、
サンプルだけを読むと歪なロジック[無駄な減算では?と感じる箇所]があります。
悪しからず。。。。。)

<サンプル・コード>
Dim idxA As Integer
Dim lvArray() As Variant
dim liMaxCols as Integer 'テキストファイル内の項目数

ReDim Preserve lvArray(liMaxCols - 1)
For idxA = 1 To liMaxCols
lvArray(idxA - 1) = Array(idxA, xlTextFormat)
Next idxA
Workbooks.OpenText Filename:="ファイル名.txt", StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=lvArray

−追記−
もしかして、Variant型の利用は、お好きではないですか?
1

スキルアップ/キャリアアップ(JOB@IT)