导出数据到Excel表格
群里今天有人问起:如何把取得的表数据导出到Excel表格里。我下来也做了些关于office开发的东西,研究了一个很直观也很笨的方法。大家可以参考一下看看,我的平台是Office 2003 ,.NET Framework 2.0, Visual C# 2.0做出来的,心下是那个文档的源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace StuManerage
{
public partial class ExportExcel : Form
{
private stuManerageAP.BaseAP apControl;
private DataSet dataFromSql;
public ExportExcel()
{
InitializeComponent();
apControl = new stuManerageAP.BaseAP();
dataFromSql = new DataSet();
}
private void beginSearch_Click(object sender, EventArgs e)
{
if (conditions.Text != null || conditions.Text != "")
{
dataFromSql = apControl.ReadBaseInfo(conditions.Text.Trim());
foreach (DataRow sqlDataRow in dataFromSql.Tables[0].Rows)
{
sqlData.Items.Add(sqlDataRow[0].ToString() + "\t\t" + sqlDataRow[1].ToString());
}
}
}
private void browseLocal_Click(object sender, EventArgs e)
{
SaveFileDialog excelSave = new SaveFileDialog();
excelSave.DefaultExt = ".xls";
excelSave.Filter = "Excel文档(*.xls)|*.xls";
if (excelSave.ShowDialog() == DialogResult.OK)
savePath.Text = excelSave.FileName;
}
private void beginExport_Click(object sender, EventArgs e)
{
panel1.Enabled = false;
beginExport.Enabled = false;
if (savePath.Text != "" || savePath.Text != null)
{
string sqlStr = "SELECT ''''+InfoBase.stuID";
if(stuBirthc.Checked)
sqlStr += ",InfoBase.birth";
if(stuClassIDc.Checked)
sqlStr += ",''''+InfoBase.classID";
if(stuFatherc.Checked)
sqlStr += ",InfoHome.fatherName";
if(stuGradec.Checked)
sqlStr += ",InfoBase.grage";
if(stuHomeaddc.Checked)
sqlStr += ",InfoHome.homeaddress";
if(stuMotherc.Checked)
sqlStr += ",InfoHome.motherName";
if(stuNamec.Checked)
sqlStr += ",InfoBase.stuName";
if(stuPIDc.Checked)
sqlStr += ",''''+InfoBase.stuPID";
if(stuProc.Checked)
sqlStr += ",InfoBase.pro";
if(stuSchoolc.Checked)
sqlStr += ",InfoBase.school";
if(stuSexc.Checked)
sqlStr += ",InfoBase.stuSex";
if(stuStatec.Checked)
sqlStr += ",InfoBase.states";
sqlStr += " FROM InfoBase,InfoHome WHERE (InfoBase.stuID='";
DataSet ds = new DataSet();
string temp = "";
foreach(object item in excelData.Items)
{
if (excelData.Items.Count == 1)
temp += sqlStr + item.ToString() + "' AND InfoHome.stuID=InfoBase.stuID);";
else
temp += sqlStr + item.ToString() + "' AND InfoHome.stuID=InfoBase.stuID) UNION ";
}
temp = temp.Remove(temp.LastIndexOf("UNION"));
ds = apControl.ReadExcelInfo(temp);
progressBar1.Maximum = ds.Tables[0].Rows.Count;
for (int i = 0; i < 1; i++)
{
string staFile = savePath.Text;
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Excel.ApplicationClass m_objExcel = new Excel.ApplicationClass();
m_objExcel.Visible = false;
Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(miss));
Excel.Worksheet m_objSheet = (Excel.Worksheet)m_objBook.ActiveSheet;
//向Excel文件中写入数据
Excel.Range er = null;
string[] dr = new string[26];
dr[0] = "A";
dr[1] = "B";
dr[2] = "C";
dr[3] = "D";
dr[4] = "E";
dr[5] = "F";
dr[6] = "G";
dr[7] = "H";
dr[8] = "I";
dr[9] = "J";
dr[10] = "K";
dr[11] = "L";
dr[12] = "M";
dr[13] = "N";
dr[14] = "O";
dr[15] = "P";
try
{
for(int x=1 ;x <= ds.Tables[0].Rows.Count ; x++)
{
for(int j=0 ; j <ds.Tables[0].Columns.Count ; j++)
{
er = m_objSheet.get_Range((object)(dr[j]+x.ToString()),miss);
er.Value2 = ds.Tables[0].Rows[x-1][j].ToString();
}
progressBar1.Value += 1;
}
}
catch(Exception erx)
{
MessageBox.Show(erx.Message);
}
m_objBook.SaveAs(staFile, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);
m_objBook.Close(false, miss, miss);
m_objBooks.Close();
m_objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(er);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
GC.Collect();
progressBar1.Value = 0;
}
}
panel1.Enabled = true;
beginExport.Enabled = true;
}
private void exportToExcel_Click(object sender, EventArgs e)
{
foreach (object item in sqlData.SelectedItems)
{
excelData.Items.Add(item.ToString().Remove(item.ToString().IndexOf("\t")));
}
}
private void trunBack_Click(object sender, EventArgs e)
{
//foreach (object item in excelData.SelectedItems)
//{
excelData.Items.Remove(excelData.SelectedItem);
excelData.Refresh();
//}
}
private void progressBar1_Click(object sender, EventArgs e)
{
}
private void savePath_TextChanged(object sender, EventArgs e)
{
}
}
}
没有看明白的我请回复我,我将全力解决你的问题。

浙公网安备 33010602011771号