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

【背景】

之前已经可以实现了,在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,表示第一列。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量