Winform导出Excel问题
现查询返回一个DataTable,分组后导出至一个Excle文件中,要求每组数据放在一个工作表中(Sheet)。请问怎样实现?并且要将每个Sheet的名字更改为数据中的某一个列,如查询出来NO,Name。。。。。No非主键,相同的可能有多条,将每个Sheet的名字设置为No。麻烦知道的说下!!!急~~~~~~
[解决办法]
看看这个http://www.cnblogs.com/lingyun_k/archive/2005/11/07/271068.html
[解决办法]
导出到 Excel 中多个工作表(Sheet) 的方法
[解决办法]
[解决办法]
就是生成xml格式的excel文件,直接写成文件就可以了,可以生成多个Sheet。
你还可以使用Excel.Application来实现
[解决办法]
private void btn_Dc_Click(object sender, EventArgs e)
{
if (lbl_SAMPLE_ID.Text == "lbl_SAMPLE_IDNone")
{
MsgBox.alert(ReturnTck.getTck("tck_tjbb_01"));
return;
}
g_strSql = @"select a.DataCell_ID,ParentCell_ID,APPLI_OLDNAME,APPLI_NAME,a.APPLI_TYPE,Cell_No,Config_Start,
Start_Bit,Config_Over,Over_Bit,Config_AValue,Config_BValue,b.APPLI_TYPE,MODE_MIN,MODE_MAX
from Basic_dataCell a left join Sys_Config b on a.DataCell_ID=b.DataCell_ID
where a.Sample_ID='" + lbl_SAMPLE_ID.Text + "' order by ParentCell_ID,Cell_No";
DataTable m_dtExcel = MySqlHelper.ExecuteDataTable(g_strSql);
if (m_dtExcel.Rows.Count > 0)
{
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbook = excel.Application.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
Microsoft.Office.Interop.Excel.Range range = null;
excel.Visible = true;
long rowRead = 0;
for (int i = 0; i < m_dtExcel.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = m_dtExcel.Columns[i].ColumnName;
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
}
//写入数值
for (int r = 0; r < m_dtExcel.Rows.Count; r++)
{
for (int i = 0; i < m_dtExcel.Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = "'" + m_dtExcel.Rows[r][i];
}
rowRead++;
}
}
}
[解决办法]
SqlConnection sqlcon = new SqlConnection("user id=sa;password=towin-2;initial catalog=lianxi;data source=.;connect Timeout=20");
//定义SqlConnection对象实例并连接数据库
SqlDataAdapter myda; //定义SqlDataAdapter对象实例
DataSet myds; //定义DataSet对象实例
public bool ExportDataGridview(DataGridView dgv, bool isShowExcle)
{
if (dgv.Rows.Count == 0)
return false;
//建立Excel对象
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle;
//生成字段名称
for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dgv.RowCount - 1; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
}
}
}
return true;
}
private void button1_Click(object sender, EventArgs e)
{
//调用自定义函数ExportDataGridview
ExportDataGridview(dataGridView1, true);
}
private void Form1_Load(object sender, EventArgs e)
{
myda = new SqlDataAdapter("select * from logo", sqlcon);
myds = new DataSet();
sqlcon.Open();
myda.Fill(myds);
sqlcon.Close();
dataGridView1.DataSource = myds.Tables[0];
}
[解决办法]
一般俺都是使用 xml 变换实现的。。