这是整体界面,要从左边的datagridview导数据保存为Excel文档,点击下面的保存按钮则保存了起来,我现在用的是vs2013的,系统是win8,与VS2008有些不同,我会指出其不同的地方。
其中datagridview控件的命名为:SensorDatadGView,保存按钮控件命名为SaveDatabtn
然后在保存按钮的Click事件中调用导出数据函数。
private void SaveDatabtn_Click(object sender, EventArgs e)
{
bIsSaveSensorData = true;
if (File.Exists(@SelPathtxtX.Text + "\\" + @FileNametxtX.Text + ".xlsx"))
{
MessageBox.Show("(づ ̄3 ̄)づ╭❤~,这个文件名被占用了,请另取名吧");
}
else
{
bool bIsSaveSuccee = ExportDataGridview(SensorDatadGView, false);
bIsSaveSensorData = false;
if (bIsSaveSuccee)
{
MessageBox.Show("(*^__^*) 嘻嘻……数据文档保存成功");
}
else
{
MessageBox.Show("o(︶︿︶)o唉 数据保存失败了!");
}
}
bIsSaveSensorData = false;
}
导出数据函数:ExportDataGridview
如下:
<pre name="code" class="csharp"> public bool ExportDataGridview(DataGridView gridView, bool isShowExcle)
{
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
if (excel == null)
{
MessageBox.Show("(づ ̄3 ̄)づ╭❤~无法创建Excel对象,可能您的机子未安装Excel");
return false;
}
excel.Visible = isShowExcle;
if (gridView.Rows.Count == 0)
{
return false;
}
//创建Excel对象
//if (excel == null)
//{
// MessageBox.Show("(づ ̄3 ̄)づ╭❤~无法创建Excel对象,可能您的机子未安装Excel");
// return false;
//}
//excel.Application.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Workbook wbNewWrkBk = excel.Workbooks.Add(true);
//生成字段名称
for (int i = 0; i < gridView.ColumnCount; i++)
{
excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < gridView.RowCount - 1; i++) //循环行
{
for (int j = 0; j < gridView.ColumnCount; j++) //循环列
{
if (gridView[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + gridView.Rows[i].Cells[j].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = gridView.Rows[i].Cells[j].Value.ToString();
}
}
}
//excel.Workbooks.Add(true).Save();
//设置禁止弹出保存和覆盖的询问提示框
//excel.Application.Visible = false;
//excel.Application.DisplayAlerts = false;
//excel.Application.AlertBeforeOverwriting = false;
excel.Visible = false;
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
//保存到临时工作簿,这是VS2008时的做法,主要是Excel控件的变化,主要考虑Excel的创建模式
//excel.Application.Workbooks.Add(true).Save();
//保存文件,不允许弹出对话框,如果允许弹出,下面的值直接不改
excel.Worksheets.Application.Visible = false;
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
//excel.Save(@SelPathtxtX.Text + "\\" + @FileNametxtX.Text + ".xlsx");
//for(int iShtIndx = 0;iShtIndx < excel.Workbooks.Count;++iShtIndx)
//{
//}
//excel.Worksheets.Count
//SaveAs是另存为的,然后Save是直接保存
wbNewWrkBk.SaveAs(@SelPathtxtX.Text + "\\" + @FileNametxtX.Text + ".xlsx");
wbNewWrkBk.Close();
excel.Workbooks.Close();
excel.Quit();
return true;