C#自动化写入Excel:数据数组批量导入

需积分: 10 11 下载量 147 浏览量 更新于2024-08-02 收藏 88KB DOC 举报
在C#中,利用Excel的“自动化”功能实现数据的批量写入是一种常见的操作,特别是在处理大量或结构化的数据时。本文主要讲解如何使用C#与Microsoft Excel进行交互,以便将数据数组高效地写入工作表。 首先,我们通过创建一个Excel应用程序对象来初始化Excel环境: ```csharp Excel.Application m_objExcel = new Excel.Application(); Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks; Excel._Workbook m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt)); // m_objOpt 是创建新工作簿的参数,可能包括工作簿的名称或模式等 Excel.Sheets m_objSheets = m_objBook.Worksheets; Excel._Worksheet m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1)); // 获取第一个工作表 ``` 接着,我们将数据结构化,例如定义一个包含表头的数组: ```csharp object[] objHeaders = {"OrderID", "Amount", "Tax"}; // 表头信息 Excel.Range m_objRange = m_objSheet.get_Range("A1", "C1"); // 设置范围为A1到C1 m_objRange.Value = objHeaders; // 将表头写入单元格 m_objRange.Font.Bold = true; // 加粗字体,以突出显示表头 ``` 接下来,我们创建一个二维数组`objData`,用于存储数据行,这里使用随机数生成模拟数据: ```csharp object[,] objData = new object[100, 3]; // 定义一个100行3列的数据矩阵 Random rdm = new Random((int)DateTime.Now.Ticks); double nOrderAmt, nTax; for (int r = 0; r < 100; r++) { objData[r, 0] = "ORD" + r.ToString("0000"); // OrderID nOrderAmt = rdm.Next(1000); // 随机金额 objData[r, 1] = nOrderAmt.ToString("c"); // 金额格式化为货币 nTax = nOrderAmt * 0.07; // 计算税费 objData[r, 2] = nTax.ToString("c"); // 税费格式化为货币 } ``` 最后,我们设置写入数据的范围,通过`get_Resize()`方法动态调整范围大小,以便适应数据数组的大小: ```csharp Excel.Range m_objNewRange = m_objSheet.get_Range("A2"); // 开始写入位置在A2 m_objNewRange = m_objNewRange.get_Resize(objData.GetLength(0), objData.GetLength(1)); // 使范围的行数和列数与数据数组匹配 m_objNewRange.Value = objData; // 将数据数组写入工作表 ``` 通过以上步骤,C#成功实现了将数据数组一次性写入Excel工作表的多个单元格区域,大大提高了数据处理的效率。这种技术在数据分析、报表生成和自动化任务中非常实用。