c#处理excel文件程序
### C#处理Excel文件程序详解 #### 一、概述 在.NET框架中处理Excel文档时,通常有两种主要方法:一种是使用Office Interop组件(即COM对象),另一种则是利用第三方库如EPPlus或NPOI等。本次分享的示例代码主要通过第一种方式——即.NET Framework自带的COM组件来实现。 #### 二、知识点分析 ##### 1. 创建DataTable 首先定义了一个名为`CreaTable`的方法用于创建一个`DataTable`。`DataTable`是.NET Framework中的一个重要数据结构,它类似于关系数据库表,在内存中存储数据。该方法中定义了四个列: - 第一列为字符串类型; - 第二列为整型; - 第三、四列为字符串类型。 随后添加两行数据到这个表中。这一步骤是为后续将这些数据写入Excel文件做准备。 ```csharp private DataTable CreaTable() { DataTable dt = new DataTable(); dt.Columns.Add("1", typeof(string)); dt.Columns.Add("2", typeof(int)); dt.Columns.Add("3", typeof(string)); dt.Columns.Add("4", typeof(string)); DataRow row = dt.NewRow(); row["1"] = "1"; row["2"] = 1; row["3"] = "d"; row["4"] = "a"; dt.Rows.Add(row); DataRow row1 = dt.NewRow(); row1["1"] = "2"; row1["2"] = 12; row1["3"] = "b"; row1["4"] = "c"; dt.Rows.Add(row1); return dt; } ``` ##### 2. 写入Excel 接下来是将创建好的`DataTable`中的数据写入到Excel文件中的步骤。这部分代码首先创建了一个新的Excel应用程序对象,并初始化了一个新的工作簿和工作表。然后遍历`DataTable`中的所有列名和数据,并将其逐个写入到Excel的工作表中。 - **设置单元格样式**:这部分代码设置了表头字体的名称和加粗样式,以及所有单元格的边框样式。 - **设置页面布局**:这里配置了页眉、页脚的显示内容,以及一些基本的格式设置。 ```csharp Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlBook = xlApp.Workbooks.Add(); Excel.Worksheet xlSheet = (Excel.Worksheet)xlBook.Worksheets.get_Item(1); int rowIndex = 1, colIndex = 0; DataTable table = CreaTable(); foreach (DataColumn col in table.Columns) { colIndex++; xlApp.Cells[1, colIndex] = col.ColumnName; } foreach (DataRow row in table.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn col in table.Columns) { colIndex++; xlApp.Cells[rowIndex, colIndex] = row[col.ColumnName]; } } // 设置单元格样式 with (xlSheet.Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colIndex])) { .Font.Name = ""; // 设置字体 .Font.Bold = true; // 加粗 .Borders.LineStyle = 1; // 设置边框 } // 设置页面布局 with (xlSheet.PageSetup) { LeftHeader = "" & "\r\n" & "&\"_GB2312,\"&10编号"; // 左页眉 CenterHeader = "" & "\r\n" & "&\"_GB2312,\"&10单位"; // 中页眉 RightHeader = "" & "\r\n" & "&\"_GB2312,\"&10日期"; // 右页眉 LeftFooter = "" & "\r\n" & "&\"_GB2312,\"&10制表人"; // 左页脚 CenterFooter = "" & "\r\n" & "&\"_GB2312,\"&10审核人"; // 中页脚 RightFooter = "" & "\r\n" & "&\"_GB2312,\"&10&[页]&[总页]"; // 右页脚 } xlApp.Visible = true; ``` ##### 3. 写入Word 除了写入Excel外,示例还展示了如何将`DataTable`中的数据写入到Word文档中。这部分代码与写入Excel类似,但是使用的是Word的API。 - **创建Word文档**:这里首先创建了一个新的Word应用程序对象,并初始化一个新的文档。 - **添加表格**:接着根据`DataTable`的行数和列数创建了一个表格,并将表头和数据逐个写入到Word文档中。 ```csharp Word.Application wordApp = new Word.Application(); Word.Document myDoc = wordApp.Documents.Add(); Word.Table oTable = myDoc.Tables.Add(myDoc.Range(0, 0), table.Rows.Count + 1, table.Columns.Count); int rowIndex = 1, colIndex = 0; foreach (DataColumn col in table.Columns) { colIndex++; oTable.Cell(1, colIndex).Range.InsertAfter(col.ColumnName); } foreach (DataRow row in table.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn col in table.Columns) { colIndex++; oTable.Cell(rowIndex, colIndex).Range.InsertAfter(row[col.ColumnName].ToString()); } } ``` #### 三、总结 本篇示例代码展示了如何使用C#结合Office Interop技术来操作Excel和Word文档。通过这种方式,开发者可以灵活地读取和写入各种格式的数据到Office文档中。需要注意的是,使用Office Interop可能会导致性能问题,特别是在处理大量数据时。因此,在实际应用中可能还需要考虑使用其他更高效的技术手段,例如使用专门的第三方库。
1.先创建一个DataTable,作为数据来源,也可以另将其它的数据源。
Private Function CreaTable() As DataTable
Dim dt As New DataTable()
dt.Columns.Add("列1", GetType(String))
dt.Columns.Add("列2", GetType(Integer))
dt.Columns.Add("列3", GetType(String))
dt.Columns.Add("列4", GetType(String))
Dim row, row1 As DataRow
row = dt.NewRow()
row!列1 = "行1"
row!列2 = 1
row!列3 = "d"
row!列4 = "a"
row1 = dt.NewRow()
row1!列1 = "行2"
row1!列2 = 12
row1!列3 = "b"
row1!列4 = "c"
dt.Rows.Add(row1)
Return dt
End Function
2.将表中的内容导出到Excel
Dim xlApp As New Excel.Application()
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
剩余10页未读,继续阅读
- shabushu2014-06-03很好,非常实用
- 粉丝: 16
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助