作者:乔山办公网日期:
返回目录:excel表格制作
可能是因为绑定的事件发正在清除的后面,你可以在代码里显式调用绑定,不要让其自动触发 DataGridView.Bind(); DataGridView.Columns.Clear();
这涉及到Execl读取了。
1、建议百先建一个类ExcelHelper,需要引用dll,不想麻烦的话直接用微软的的Microsoft.Office.Interop.Excel就行,当然了,推荐NPOI,开源的,百度下载。参考一些常用写法,在这个度类里写好读回取Excel的答方法,比如ExcelToDataTable(),将Excel读出来的数据转成DataTable型变量。
后续有更多Execl相关的操作的话,都在这个类里实现,方便移植。
2、导入时给DataGridView赋值就行。调用ExcelHelper.ExcelToDataTable()把Excel内容对应的DataTable取出来,然后赋给DataGridView的DataSource属性。
需要使用插件,
1、微软来的EXCEL插件,(DLL) ,需要运行程序的机器上安装的有对应版本的EXCEL,慢。
2、NPOI(第三方),不需要其他约自束,二进制处理,极快。
两种插件思路都是按照 单元格来处理EXCEL读写,可以自己查询文档,很简单的。百
比如
var st1 = wk.GetSheetAt(0);// EXCEL的第一度个sheet。
var row = st1.GetRow(0);//该sheet的第一行。
var cell = row.GetCell(0); //该行的第一个单元格,
然后就是赋值了,
cell.SetCellValue = "你要赋的值";
然后遍历整个sheet 就OK了。
最后存起来。
using (Stream s = File.OpenWrite(Path+".xlsx"))
{
wk.Write(s);
}
DataGrid其实格问式和Excel一样的, 你一次取一行,然后从第一列开始遍历,给EXCEL赋值就好了.
var value = Mydatagrid.Row[i][j]; 其实就是个数据表,分别指定行数和列数,就取出来答值了。
自己转换一下数据类型,给EXCEL就OK了。、
可以使用winform编程的方式实现,步骤如下:
读取这个excel文件e799bee5baa6e997aee7ad94e78988e69d83337然后生成Datable 。
在winform前台界面选择生成的Datable 。
然后填写以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace 读Excel文件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 选择文件按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = this.openFileDialog1.FileName;
}
}
/// <summary>
/// 点击导出excel按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
string File = this.openFileDialog1.FileName;
DataTable dt = ExcelUp(File);
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
}
/// <summary>
/// 读取指定excel表中的内容返回datatable
/// </summary>
/// <param name="fileName">文件地址</param>
/// <returns>表中内容</returns>
public DataTable ExcelUp(string fileName)
{
string filePath = fileName;//读取excel文件路径;
DataTable dt = GetDataTable("Sheet1", filePath);
return dt;
}
/// <summary>
/// 读取excel指定页中的内容
/// </summary>
/// <param name="strSheetName">页名</param>
/// <param name="strExcelFileName">excel路径</param>
/// <returns></returns>
protected DataTable GetDataTable(string strSheetName, string strExcelFileName)
{
//源的定义
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source={0};" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';", strExcelFileName);
//Sql语句
string strExcel = string.Format("select * from [{0}$]", strSheetName);
//定义存放的数据表
DataSet ds = new DataSet();
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
try
{
conn.Open();
//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
}
catch (Exception e)
{
throw e;
}
finally
{
conn.Close();
}
return ds.Tables[strSheetName];
}
}
}