加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用c#冻结excel列

发布时间:2020-12-15 17:59:51 所属栏目:百科 来源:网络整理
导读:我用c#生成一个excel spread-cheat,我想冻结第一列. 这是我使用的代码: public static void SaveToExcel(object[,] data) { Excel = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application",String.Empty); Excel.ScreenUpdating = false; dy
我用c#生成一个excel spread-cheat,我想冻结第一列.
这是我使用的代码:
public static void SaveToExcel(object[,] data)
    {
        Excel = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application",String.Empty);
        Excel.ScreenUpdating = false;
        dynamic workbook = Excel.workbooks;
        workbook.Add();

        dynamic worksheet = Excel.ActiveSheet;

        const int left = 1;
        const int top = 1;
        int height = data.GetLength(0);
        int width = data.GetLength(1);
        int bottom = top + height - 1;
        int right = left + width - 1;

        if (height == 0 || width == 0)
            return;

        dynamic rg = worksheet.Range[worksheet.Cells[top,left],worksheet.Cells[bottom,right]];
        rg.Value = data;

        // Set borders
        for (var i = 1; i <= 4; i++)
            rg.Borders[i].LineStyle = 1;

        // Set header view
        dynamic rgHeader = worksheet.Range[worksheet.Cells[top,worksheet.Cells[top,right]];
        rgHeader.Font.Bold = true;
        rgHeader.Interior.Color = 189 * (int)Math.Pow(16,4) + 129 * (int)Math.Pow(16,2) + 78;
        rg.EntireColumn.AutoFit();

        // Show excel app
        Excel.ScreenUpdating = true;
        Excel.Visible = true;
    }

请你帮助我好吗???

解决方法

正确的解决方案是添加以下代码:
worksheet.Activate();
        worksheet.Application.ActiveWindow.SplitColumn = 1;
        worksheet.Application.ActiveWindow.FreezePanes = true;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读