C#读写Excel2003和Excel2007 C#读写Excel2003和Excel2007 C#读写Excel2003和Excel2007 C#读写Excel2003和Excel2007 C#读写Excel2003和Excel2007 根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何使用C#语言来读取和写入Excel 2003与Excel 2007格式的文件。由于Excel 2003和Excel 2007在文件格式上有所不同(Excel 2003使用.xls扩展名,而Excel 2007开始采用.xlsx),因此处理这两种不同版本的Excel文件时会有一些差异。 ### 一、C#读取Excel 2007 在C#中读取Excel 2007文件通常涉及到使用`Microsoft.ACE.OLEDB.12.0`作为数据提供程序。这部分代码展示了一个简单的函数`GetExcelData`,用于读取Excel 2007文件中的数据并将其存储到一个`DataSet`对象中: ```csharp private DataSet GetExcelData(string strFilePath) { string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFilePath + ";Extended Properties=\"Excel 12.0;HDR=YES\""; using (OleDbConnection connection = new OleDbConnection(connectionString)) { string commandText = "SELECT * FROM [Sheet1$]"; using (connection.Open()) { using (OleDbDataAdapter adapter = new OleDbDataAdapter(commandText, connection)) { DataSet dataSet = new DataSet(); adapter.Fill(dataSet, "[Sheet1$]"); return dataSet; } } } } ``` 这里的关键是构造正确的连接字符串,其中: - `Provider=Microsoft.ACE.OLEDB.12.0`: 指定了数据提供程序。 - `Data Source=`: 指定Excel文件路径。 - `Extended Properties="Excel 12.0;HDR=YES"`: 指定文件格式为Excel 2007,并且第一行包含表头信息。 ### 二、C#读取Excel 2003 对于Excel 2003文件,可以使用`Microsoft.Jet.OLEDB.4.0`作为数据提供程序。下面是一个示例函数`ExcelToDS`,该函数用于将Excel 2003文件读取到`DataSet`中: ```csharp public DataSet ExcelToDS(string filePath) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); string excelQuery = "SELECT * FROM [Sheet1$]"; using (OleDbDataAdapter adapter = new OleDbDataAdapter(excelQuery, connection)) { DataSet dataSet = new DataSet(); adapter.Fill(dataSet, "table1"); return dataSet; } } } ``` 这里同样需要注意构造连接字符串的方式,区别在于: - `Provider=Microsoft.Jet.OLEDB.4.0`: 数据提供程序适用于Excel 2003。 - `Extended Properties=Excel 8.0`: 指定文件格式为Excel 2003。 ### 三、C#写入Excel 2003 接下来是一个示例方法`SaveFP2toExcel`,用于将数据写入Excel 2003文件: ```csharp public bool SaveFP2toExcel(string filePath) { try { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = connection; for (int i = 0; i < fp2.Sheets[0].RowCount - 1; i++) { if (!string.IsNullOrEmpty(fp2.Sheets[0].Cells[i, 0].Text)) { string sql = "INSERT INTO [Sheet1$] (Column1, Column2, Column3, Column4, Column5, Column6) VALUES (@value1, @value2, @value3, @value4, @value5, @value6)"; cmd.CommandText = sql; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@value1", fp2.Sheets[0].Cells[i, 0].Text); cmd.Parameters.AddWithValue("@value2", fp2.Sheets[0].Cells[i, 1].Text); cmd.Parameters.AddWithValue("@value3", fp2.Sheets[0].Cells[i, 2].Text); cmd.Parameters.AddWithValue("@value4", fp2.Sheets[0].Cells[i, 3].Text); cmd.Parameters.AddWithValue("@value5", fp2.Sheets[0].Cells[i, 4].Text); cmd.Parameters.AddWithValue("@value6", fp2.Sheets[0].Cells[i, 5].Text); cmd.ExecuteNonQuery(); } } connection.Close(); return true; } } } catch (OleDbException ex) { // 处理异常 return false; } } ``` 在这个例子中,我们使用了参数化查询来避免SQL注入问题,并确保数据的安全性。 ### 四、总结 以上就是使用C#进行Excel 2003和Excel 2007文件读写的实现方式。需要注意的是,在实际开发过程中,还需要考虑到错误处理、资源释放等问题。此外,为了提高性能和兼容性,还可以考虑使用专门的库如EPPlus等,这些库提供了更丰富的功能和更好的性能。
- yjx2797420482014-03-20你的SaveFP2toExcel(),你倒是说明一下fp2是什么类型啊
- micusic2012-08-27短小精悍的几个函数,比较有用
- 粉丝: 43
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助