Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

怎么自定义单元格样式 #325

Closed
xiangxiren opened this issue Sep 8, 2021 · 10 comments
Closed

怎么自定义单元格样式 #325

xiangxiren opened this issue Sep 8, 2021 · 10 comments
Labels
area-excel excel enhancement New feature or request

Comments

@xiangxiren
Copy link
Contributor

我这有个需求,部分单元格边框要设置颜色。能实现么?

@xl-wenqiang
Copy link
Collaborator

暂时建议在导出完成后,使用EPPLUS的API进行处理

@xl-wenqiang xl-wenqiang added area-excel excel enhancement New feature or request labels Sep 9, 2021
@xiangxiren
Copy link
Contributor Author

有没有示例参考一下,比如用Magicodes.IE.Excel生成了一个多sheet的文件字节数组,接下来该怎么用EPPLUS的API操作?

@hueifeng
Copy link
Member

hueifeng commented Sep 9, 2021

@xiangxiren 可以参考如下代码片段

         var list2 = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>(30);
            using (var pck = new ExcelPackage(new FileInfo(filePath)))
            {
                    var data = await exporter.ExportAsByteArray<ExportTestDataWithAttrs>(list2);
                    Stream stream = new MemoryStream(data);
                    using (var pck1 = new ExcelPackage(stream))
                    {
                        pck.Workbook.Worksheets.Add("sheetName",pck1.Workbook.Worksheets.First());
                    }
                    pck.Save();
          }

@xiangxiren
Copy link
Contributor Author

@xiangxiren 可以参考如下代码片段

         var list2 = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>(30);
            using (var pck = new ExcelPackage(new FileInfo(filePath)))
            {
                    var data = await exporter.ExportAsByteArray<ExportTestDataWithAttrs>(list2);
                    Stream stream = new MemoryStream(data);
                    using (var pck1 = new ExcelPackage(stream))
                    {
                        pck.Workbook.Worksheets.Add("sheetName",pck1.Workbook.Worksheets.First());
                    }
                    pck.Save();
          }

谢谢

@xiangxiren
Copy link
Contributor Author

设置边框的颜色报错 Can't set bordercolor when style is not set。代码如下:

var outputStream = new MemoryStream();
            await using (var stream = new MemoryStream(byteArray))
            {
                using var pck = new ExcelPackage(stream);
                var ws = pck.Workbook.Worksheets[0];

                int column = 1;
                while (true)
                {
                    var cell = ws.Cells[1, column++];
                    var text = cell.Text;
                    if (string.IsNullOrEmpty(text))
                    {
                        break;
                    }

                    //todo 单元格的text需不需要设置颜色
                    cell.Style.Border.Bottom.Color.SetColor(Color.FromKnownColor(KnownColor.Red));
                    cell.Style.Border.Top.Color.SetColor(Color.FromKnownColor(KnownColor.Red));
                    cell.Style.Border.Left.Color.SetColor(Color.FromKnownColor(KnownColor.Red));
                    cell.Style.Border.Right.Color.SetColor(Color.FromKnownColor(KnownColor.Red));
                    cell.Style.Font.Color.SetColor(Color.FromKnownColor(KnownColor.Red));
                }

                pck.SaveAs(outputStream);
            }

另外获取表头的单元格还有没有更好的方法?

@hueifeng
Copy link
Member

我们需要先指定BorderStyle,否则在EPPlus中不允许对Border的操作,可以通过如下方式设置。

                cell.Style.Border.Top.Style = ExcelBorderStyle.Thin;
                cell.Style.Border.Left.Style = ExcelBorderStyle.Thin;
                cell.Style.Border.Right.Style = ExcelBorderStyle.Thin;
                cell.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;

获取表头是否可以通过如下语句获取第一行表头?

ws.Tables.First()

@xiangxiren
Copy link
Contributor Author

sw.Tables.First()

报错啦。Sequence contains no elements

@hueifeng
Copy link
Member

看起来常用的还是使用原方式

//第一行第一列
ws.Cells[1, 1].Value = 0;
//第一行第二列
ws.Cells[1, 1].Value = 0;

或者

ws.Row(1)

@xiangxiren
Copy link
Contributor Author

我尝试在ExporterHeaderAttribute添加设置字体颜色的属性。如果我提交PR,你们会合并吗?
另外我感觉目前的组件包袱好重啊,.net framework、.netstandard2.0 都还在支持。

@xl-wenqiang
Copy link
Collaborator

我尝试在ExporterHeaderAttribute添加设置字体颜色的属性。如果我提交PR,你们会合并吗? 另外我感觉目前的组件包袱好重啊,.net framework、.netstandard2.0 都还在支持。

会的,欢迎提交PR。国庆期间初步做了一次重构。

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
area-excel excel enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants