如何使用C#将对象添加为Excel行
例如我有一个class级 – 会员,看起来像
class Member { public string Id { get; set; } public string Login { get; set; } public string AddDate { get; set; } public string FirstName{ get; set; } public string LastName{ get; set; } public string FullName { get; set; } }
现在我需要将成员的对象作为一行插入Excel工作表中。 我正在使用Microsoft.Office.Interop
并通过使用下面的代码有一个WorkSheet对象:
Excel.Application xlApp = new Excel.Application(); xlApp.Visible = true; Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Excel.Worksheet xlWorkSheet = (Worksheet)xlWorkBook.Worksheets[1];
我的最终输出应该看起来像
那么你已经声明了你的Excel.Worksheet
,现在你只需要遍历存储在某个地方的Member
类,并将它们的每个属性写入工作表。
假设您将所有Member
类存储在List<Member> members
和List<string> headers
中的所有标题值中:
//Setting up headers int column = 1; foreach (var item in members) xlWorksheet.Cells[1, column++].Value = item; //setting up member values int row = 2; foreach (var item in members) { column = 1; xlWorksheet.Cells[row, column++].Value = item.Id; xlWorksheet.Cells[row, column++].Value = item.Login; xlWorksheet.Cells[row, column++].Value = item.AddDate; xlWorksheet.Cells[row, column++].Value = item.FirstName; xlWorksheet.Cells[row, column++].Value = item.LastName; xlWorksheet.Cells[row++, column].Value = item.FullName; }
请注意,如果您处理需要插入到工作表中的疯狂的大量数据,这可能不是最佳解决scheme。 在这种情况下,您可以禁用excel的screenupdating( xlApp.ScreenUpdating = false;
),但是,请注意,您应该在插入完成后将其恢复为true
。 我认为在你的情况下,我的代码的简单性将工作得很好,但如果你绝对必须优化它,那么你也可以直接使用Excel.Range
Value2
插入一个Member
数组。 像这样的东西:
const int rowCount = 1, columnCount = 6; object[,] membersArray = new object[rowCount, columnCount]; //fill up membersArray with your data here xlWorksheet.Cells[1, 1].Value2 = membersArray;
- 用错误的标题行阅读Excel文件
- Timespan Arithematics预测潮stream
- 如何在Visual Studio 2012中更改Concurrency Visualizer线程视图的导出的.csv文件中的列分隔符?
- ExcelLibrary – 尝试打开Excel电子表格时发生OutOfMemoryException
- 如何在C#中检查input(xls)文件的内容types?
- 从ASPX页面创build和下载Excel文件
- ASP.NET Core直接在一个调用服务器(即时)中返回excel文件(xlsx)?
- 如何使用C#Windows窗体应用程序在Excel中创build堆积条形图
- 在没有Interop.Excel的情况下通过C#修改Excel工作表