使用电子表格设备动态生成 Excel 中的标题

发布于 2024-12-24 16:24:37 字数 87 浏览 0 评论 0原文

示例:假设 A、B、C 是工作表中的列,1、2、3 是工作表中的行。对于 A 列 1、2、3 行需要合并显示为单行如何使用电子表格齿轮 ABC 1 2 3

Example: Let say A,B,C are columns and 1,2,3 are rows in a sheet.For A column 1,2,3 rows need to merge display as single rows how using spreadsheet gear
A B C
1
2
3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假情假意假温柔 2024-12-31 16:24:37

我不确定你所说的动态生成标头是什么意思。您的数据来源是什么?要合并列或行,可以使用 IRange 类的 Merge 方法。

workbookView1.ActiveWorksheet.Cells["A1:A3"].Merge()

合并到一个单元格将仅保留最左上角的数据。

I'm not sure what you mean about dynamically generating headers. What is your source of data? To merge columns or rows, you can use the Merge method of the IRange class.

workbookView1.ActiveWorksheet.Cells["A1:A3"].Merge()

Merging into one cell will keep the upper-left most data only.

微暖i 2024-12-31 16:24:37

您可以做的是使用反射发送 Enumerable 类型并将其转换为 DataTable。

 private static DataTable ConvertToDataTable(IEnumerable<T> enumerable)
        {
            var properties = TypeDescriptor.GetProperties(typeof(T));
            var table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (var item in enumerable)
            {
                var row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;
        }

之后让电子表格设备完成其工作。
将其转换为内存流,然后转换为 byte[]

将 byte[] 传递给 FileContentResult

What you can do is use reflection to send a Enumerable type and convert it to DataTable.

 private static DataTable ConvertToDataTable(IEnumerable<T> enumerable)
        {
            var properties = TypeDescriptor.GetProperties(typeof(T));
            var table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (var item in enumerable)
            {
                var row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;
        }

After that let the spreadsheet gear do its job.
Convert it to memory stream and then to byte[]

Pass the byte[] to FileContentResult

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文