3

私が持っている次のコードスニペットは、文字列の長方形の行列とxlsファイルを書き込むためのパスを受け入れる関数です。マトリックスの内容をExcelシートのセルに配置し、内容に基づいていくつかの書式を適用します。

public static void WriteXL(string[,] matrix, string path)
{
    XL.Application app = new XL.Application();
    XL.Workbook wbk    = app.Workbooks.Add();
    XL.Worksheet wsht  = wbk.Worksheets.Add();

    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            int _i = i + 1;
            int _j = j + 1;

            if (matrix[i, 0] == "Day" || matrix[i, 0] == "Date")
            {
                wsht.Cells[_i, _j].Font.Bold            = true;
                wsht.Cells[_i, _j].Font.Italic          = false;
                wsht.Cells[_i, _j].Style.Font.Name      = "Arial";
                wsht.Cells[_i, _j].Style.Font.Size      = 12;
                wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.Yellow);
            }
            else if (j == 0)
            {
                wsht.Cells[_i, _j].Font.Bold            = false;
                wsht.Cells[_i, _j].Font.Italic          = true;
                wsht.Cells[_i, _j].Style.Font.Name      = "Arial";
                wsht.Cells[_i, _j].Style.Font.Size      = 12;
                wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.Beige);
            }
            else
            {
                wsht.Cells[_i, _j].Font.Bold            = false;
                wsht.Cells[_i, _j].Font.Italic          = false;
                wsht.Cells[_i, _j].Style.Font.Name      = "Arial";
                wsht.Cells[_i, _j].Style.Font.Size      = 10;
                wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.White);
            }

            wsht.Cells[_i, _j].Value = matrix[i, j];
        }
    }

    wbk.SaveAs(path);
    wbk.Close();
    app.Quit();
    app = null;

    GC.Collect();
    GC.WaitForFullGCComplete();
    GC.WaitForPendingFinalizers();
}

したがって、想像できると思いますが、見出しのように、行を区切る「Day」と「Date」で始まる行があります。これらの行は太字のフォントと黄色の背景を持っています。これらの区切り行にあるセルを除いて、左端の列にはベージュの背景と斜体のテキストがあります。残りのセルは、背景が白の通常のテキストです。

生成されたxlsファイルを開くと、これはまったく表示されません。まず、ワークシート全体が白です。次に、「Day」(「Date」の前に来る)は太字ですが、サイズが間違っています。

使用されている最新の色がワークシート全体に適用されているようです。フォントサイズの変更は、現在のセルではなく、次のセルにのみ適用されます。

4

1 に答える 1

4

.Styleを削除してみてください。

wsht.Cells[_i, _j].Font.Name 

それ以外の

wsht.Cells[_i, _j].Style.Font.Name 

そのスタイルを共有するシート上の他のセルも影響を受けるため、スタイルではなくセル自体を操作する必要があります。

于 2012-12-11T00:17:22.957 に答える