-1

この質問は、Word 文書の明らかな「テキスト行」をすべて Excel シートの行にインポートしたいという人から始まりましたが、何らかの開発がなければこれは不可能であると確信しています。

ウィンドウに表示されたときに文字列が新しい行に折り返されるたびに、改行を挿入したいと思います(構成されているものは何でも)。どうやってやるの?ウィンドウにクエリを実行してテキスト行の配列を取得し、各行の文字数を数え、元の文字列で、その行に表示される文字数の後に改行を挿入する必要があると思います。

もちろん、ウィンドウ サイズを変更すると、このコードの記述方法がすべて無効になることは認識していますが、それはここでは関係ありません。

有用な情報: 元の Word から Excel へのエクスポートの問題に対する解決策を見つけました。Word 文書をテキスト ファイルとして保存する場合、 [保存] ダイアログで [保存]クリックすると、別のダイアログが表示され、改行を挿入するオプションが表示されます。

4

2 に答える 2

0

できることは、表示コントロールの幅とそれが使用しているフォントを取得してから、各文字の幅を調べるために使用できる構造体GetTextMetricsを取得するために使用することです。これは、さまざまなキャラクター プロファイルをすべて考慮に入れるため、非常に複雑です。TEXTMETRIC

簡単な方法はGetTextExtentPoint32、文字列とフォント プロパティを指定して、その幅をピクセル単位で返す which を使用することです。そのため、改行がどこにあるかについて大まかな見積もりを作成し、その部分文字列でこの関数を呼び出し、結果がGetTextExtentPoint32テキスト コントロールの幅よりわずかに小さい場合に改行を挿入できます。

乾杯。

于 2012-05-06T19:18:37.203 に答える
0

あなたができることは次のようなものです:

int width = txtBox.width;
Graphics g = CreateGraphics();

SizeF size = g.MeasureString(myText, txtBox.Font);

if (size.Width > width)
{
    int i = 0;
    List<string> lines = new List<String>();
    string str = "";
    while (i<myText.Length)
    {

        str = str + myText.SubString(i,1);
        int w = (int)(g.MeasureString(str, txtBox.Font).Width);
        while (w<width && i<myText.Length)
        {
             i++;
             str = str + myText.SubString(i,1);
        }
        str = str + '\n';
    }

    // str now contains your newline formatted string
    return str;
}
return myText;
于 2012-05-06T19:41:25.087 に答える