C#实现datagridview数据另存为,并允许用户选择excel或txt
时间: 2024-09-24 21:08:39 浏览: 52
在C#中,DataGridView是一个强大的控件,用于显示和编辑表格数据。要将DataGridView中的数据另存为Excel(.xls或.xlsx)或文本文件(.txt),你可以使用以下步骤:
### 1. 引用必要的库
确保项目已经添加了`System.Data`, `System.IO`, 和 `Microsoft.Office.Interop.Excel`引用。对于Excel操作,你需要对Office Interop库进行引用。
```csharp
using System;
using System.Data;
using System.IO;
using Microsoft.Office.Interop.Excel;
```
### 2. 创建保存Excel的方法
创建一个方法来保存DataGridView到Excel文件:
```csharp
private void SaveToExcel(DataGridView dataGridView, string filePath)
{
Excel.Application excelApp = new Application();
try
{
Workbook workbook = excelApp.Workbooks.Add();
Worksheet worksheet = workbook.ActiveSheet;
// 将DataGridView数据复制到Excel
int row = 1, col = 1;
foreach (DataGridViewRow dgvRow in dataGridView.Rows)
{
for (int cellIndex = 0; cellIndex < dgvRow.Cells.Count; cellIndex++)
{
object value = dgvRow.Cells[cellIndex].Value;
if (value != null)
worksheet.Cells[row++, col++] = value;
}
}
// 设置文件名、保存位置等属性并保存
workbook.SaveAs(filePath);
workbook.Close(false);
excelApp.Quit();
}
catch (Exception ex)
{
Console.WriteLine("Error saving to Excel: " + ex.Message);
}
finally
{
if (excelApp != null && excelApp.Visible)
Marshal.ReleaseComObject(excelApp);
}
}
```
### 3. 创建保存文本文件的方法
同样地,创建一个方法将数据写入文本文件:
```csharp
private void SaveToTextFile(DataGridView dataGridView, string filePath)
{
using (StreamWriter writer = File.CreateText(filePath))
{
for (int i = 0; i < dataGridView.RowCount; i++)
{
for (int j = 0; j < dataGridView.ColumnCount; j++)
{
object value = dataGridView[j, i].Value;
writer.Write(value.ToString() + "\t");
}
writer.WriteLine(); // 换行
}
}
}
```
### 4. 提供用户选择文件类型并调用对应方法
在一个按钮点击事件或其他合适的地方,提供一个对话框让用户选择文件类型并输入路径,然后根据用户的选择调用相应的方法:
```csharp
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Filter = "Excel file (*.xls)|*.xls|Excel 2007+(*.xlsx)|*.xlsx|Text file (*.txt)|*.txt";
if (saveDialog.ShowDialog() == DialogResult.OK)
{
string selectedFormat = Path.GetExtension(saveDialog.FileName).ToLower();
switch (selectedFormat)
{
case ".xls":
SaveToExcel(dataGridView, saveDialog.FileName);
break;
case ".xlsx":
SaveToExcel(dataGridView, saveDialog.FileName);
break;
case ".txt":
SaveToTextFile(dataGridView, saveDialog.FileName);
break;
default:
MessageBox.Show("Unsupported file format.");
break;
}
}
}
```
阅读全文