最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】C#中操作Excel文件实现单行的自动适应列宽+C#中如何选中Excel的某列

C# crifan 10284浏览 0评论

【背景】

之前已经可以实现了,在C#中,操作Excel文件,实现整个excel文件内的所有的内容, 即所有的列,都实现自动适应列宽:

【已解决】C#中操作刚导出的Excel,设置其为自动调整列宽

但是此处,对于这样的excel:

excel contains many columns

即包含多行,且:

如果全部的列,都适应列宽,那么整个excel就太宽了,不方便查看内容,要水平滚动条,拖动来拖动去的;

如果全部都不去适应列宽的话,对于每行的内容,又看得不是很清楚;

所以希望:

只调整第一列,即title那列,只让第一列自动适应列宽,这样就实现了:

即方便查看excel中的每行的内容,又不至于excel页面弄得太宽

即希望弄成这样的:

first column is auto adjusted width

【折腾过程】

1.之前的,全部都自动适应列宽的代码是:

            //(2) auto adjust column width (according to content)
            if (isAutoFit)
            {
                Range allColumn = xlWorkSheet.Columns;
                allColumn.AutoFit();
            }

2.看起来,貌似可以直接通过:

只选中第一列,然后再执行AutoFit,或许就可以了。

去试试:

            bool isAutoFitForFistColumn = true;
            if (isAutoFitForFistColumn)
            {
                Range firstColumn = (Range)xlWorkSheet.Columns[0];
                firstColumn.AutoFit();
            }

结果是,对于

Range firstColumn = (Range)xlWorkSheet.Columns[0];

会直接挂掉,是不能正常执行此句代码的。

3.问题转化为了:

C#中如何选中Excel的某列

参考:

如何在 C# 中获得 Excel 工作表的一列

http://bbs.csdn.net/topics/50481843

去试试:

                Range firstColumn = xlWorkSheet.get_Range("A1");
                //Range firstColumn = (Range)xlWorkSheet.Columns[0];
                firstColumn.AutoFit();

结果代码:

firstColumn.AutoFit();

也还是会挂掉。

4.后来参考:

C# Excel列宽自适应

去试试:

                Range firstColumn = xlWorkSheet.get_Range("A1");
                //Range firstColumn = (Range)xlWorkSheet.Columns[0];
                firstColumn.EntireColumn.AutoFit();

结果就可以正常执行了,看,可以自动适应列宽了。

效果是:

can use code to auto adjust first column width

【总结】

列宽自适应,是直接用AutoFit即可。

所以想要某列的列宽自适应的话,则需要:

先得到整个列,才可以执行AutoFit。

对应的代码是:

Range firstColumn = xlWorkSheet.get_Range("A1");
firstColumn.EntireColumn.AutoFit();

其中,A1,表示第一列。

转载请注明:在路上 » 【已解决】C#中操作Excel文件实现单行的自动适应列宽+C#中如何选中Excel的某列

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.199 seconds, using 22.10MB memory