คำสั่ง:运行之前必须先引用Interop.Excel.dll模块
ใช้ระบบ;
ใช้ System.Collections.Generic;
ใช้ System.Text;
ใช้ System.Data;
โดยใช้ System.Data.OleDb;
โดยใช้ System.Windows.Forms;
โดยใช้ System.Reflection;
ใช้เอ็กเซล;
เนมสเปซ AnalysisSystem.DB
-
ExcelOperation คลาสสาธารณะ
-
สตริงส่วนตัว _fileName;//保存路径名
ExcelOperation สาธารณะ (ชื่อไฟล์สตริง)
-
_fileName = ชื่อไฟล์;
-
OleDbConnection GetConnection ส่วนตัว ()
-
string ConnectString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};คุณสมบัติเพิ่มเติม=Excel 8.0",_fileName);
OleDbConnection myConn = new OleDbConnection(connectString);//建立链接
ส่งคืน myConn;
-
System.Data.DataTable ExecuteTableResult สาธารณะ (สตริง strSql)
-
System.Data.DataTable dt = System.Data.DataTable(); ใหม่
พยายาม
-
OleDbConnection conn = this.GetConnection();
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);//执行相关SQL语句
da.เติม(dt);
-
จับ (System.Exception เช่น)
-
//ไม่ทำอะไรเลย
-
กลับ dt;
-
ชุดข้อมูลสาธารณะ ExecuteSetResult (สตริง strSql, สตริง table_name)
-
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ();
สตริง temp_name = "[" + table_name + "$]";
พยายาม
-
OleDbConnection conn = this.GetConnection();
OleDbDataAdapter da = OleDbDataAdapter ใหม่ (strSql, conn);
da.กรอก(ds,temp_name);
-
จับ (System.Exception เช่น)
-
//ไม่ทำอะไรเลย
-
กลับds;
-
สตริงสาธารณะ ExecuteOneResult (สตริง strSql)
-
ผลลัพธ์สตริง = "";
System.Data.DataTable dt = System.Data.DataTable(); ใหม่
พยายาม
-
OleDbConnection conn = this.GetConnection();
OleDbDataAdapter da = OleDbDataAdapter ใหม่ (strSql, conn);
da.เติม(dt);
-
จับ (System.Exception เช่น)
-
//ไม่ทำอะไรเลย
-
ถ้า (dt != null && dt.Rows.Count > 0)
-
ผลลัพธ์ = dt.Rows [0] [0].ToString ();
-
ส่งคืนผลลัพธ์;
-
โมฆะสาธารณะ ExecuteNonResult (สตริง strSql)
-
พยายาม
-
OleDbConnection conn = this.GetConnection();
OleDbCommand cmd = ใหม่ OleDbCommand(strSql, conn);
cmd.ExecuteNonQuery();
-
จับ (System.Exception เช่น)
-
//ไม่ทำอะไรเลย
-
-
_Workbook ส่วนตัว W_B (แอป Excel.Application)
-
สมุดงาน สมุดงาน = app.Workbooks;
_สมุดงานสมุดงาน = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
ส่งคืนสมุดงาน;
-
ส่วนตัว _แผ่นงาน W_S (_สมุดงาน work_book)
-
ชีต แผ่นงาน = work_book.Worksheets;
_แผ่นงานแผ่นงาน = (_แผ่นงาน)sheets.get_Item(1);//获取选择第一个表,本身默认名称为Sheet1
ใบงานส่งคืน;
-
// 从DataGridView中导出数据到Excel表,单表导出
โมฆะสาธารณะ Excel_out (DataGridView dataGridView1)
-
//建立Excel对象
แอป Excel.Application = Excel.Application ใหม่ ();
พยายาม
-
_สมุดงานสมุดงาน = this.W_B (แอป);
_แผ่นงานแผ่นงาน = this.W_S (สมุดงาน);
สตริง sLen = "";
//取得最后一列列名
ถ่าน H = (ถ่าน)(64 + dataGridView1.ColumnCount / 26);
ถ่าน L = (ถ่าน)(64 + dataGridView1.ColumnCount % 26);
ถ้า (dataGridView1.ColumnCount < 26)
-
sLen = L.ToString();
-
อื่น
-
sLen = H.ToString() + L.ToString();
-
//标题
สตริง sTmp = sLen + "1";
ช่วง ranCaption = worksheet.get_Range (sTmp, "A1");
string[] asCaption = สตริงใหม่ [dataGridView1.ColumnCount];
สำหรับ (int i = 0; i < dataGridView1.ColumnCount; i++)
-
asCaption[i] = dataGridView1.Columns[i].HeaderText;
-
ranCaption.Value2 = asCaption;
//数据
วัตถุ [] obj = วัตถุใหม่ [dataGridView1.Columns.Count];
สำหรับ (int r = 0; r < dataGridView1.RowCount - 1; r++)
-
สำหรับ (int l = 0; l < dataGridView1.Columns.Count; l++)
-
ถ้า (dataGridView1[l, r].ValueType == typeof(DateTime))
-
obj[l] = dataGridView1[l, r].Value.ToString();
-
อื่น
-
obj[l] = dataGridView1[l, r].ค่า;
-
-
สตริง cell1 = sLen + ((int)(r + 2)).ToString();
สตริง cell2 = "A" + ((int)(r + 2)).ToString();
วิ่งช่วง = worksheet.get_Range (เซลล์1, เซลล์2);
ran.Value2 = obj;
-
//保存
สมุดงาน SaveCopyAs (this._fileName);
สมุดงาน.บันทึก=จริง;
-
ในที่สุด
-
//关闭
app.UserControl = เท็จ;
แอพ Quit();
-
-
/// <สรุป>
/// 多表导出
/// </สรุป>
/// <param name="dataGridView">DataGridView 列表集合</param>
/// <param name="TableList">表名称集合</param>
โมฆะสาธารณะ Excel_out_MulTable (รายการ <DataGridView> dataGridView, สตริง [] TableList)
-
//建立Excel对象
แอป Excel.Application = Excel.Application ใหม่ ();
พยายาม
-
สมุดงาน สมุดงาน = app.Workbooks;//定义一个工作簿集合
_สมุดงานสมุดงาน = workbooks.Add(XlWBATemplate.xlWBATWorksheet);//向工作簿添加一个新工作簿
ชีต sheet = workbook.Worksheets;//定义一个工作表集合
_แผ่นงานแผ่นงาน ;
จำนวน int = 0;
ในขณะที่ (wnumber++ < (TableList.GetLength(0) - 1))
-
Sheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);//向一个工作表集合添加一个新工作表
-
/*提醒:Missing System.Reflection中的类,所以记得引入*/
จำนวน = 0;
foreach (DataGridView dataGridView1 ใน dataGridView)
-
แผ่นงาน = null;
แผ่นงาน = (_แผ่นงาน)sheets.get_Item(wnumber + 1);//取出需要进行操作的工作表
worksheet.Name = TableList[wnumber];//设置改工作表名称
ถ้า (wnumber != 0)
Sheets.Select(wnumber);//选中操作表
สตริง sLen = "";
//取得最后一列列名
ถ่าน H = (ถ่าน)(64 + dataGridView1.ColumnCount / 26);
ถ่าน L = (ถ่าน)(64 + dataGridView1.ColumnCount % 26);
ถ้า (dataGridView1.ColumnCount < 26)
-
sLen = L.ToString();
-
อื่น
-
sLen = H.ToString() + L.ToString();
-
//标题
สตริง sTmp = sLen + "1";
ช่วง ranCaption = worksheet.get_Range (sTmp, "A1");
string[] asCaption = สตริงใหม่ [dataGridView1.ColumnCount];
สำหรับ (int i = 0; i < dataGridView1.ColumnCount; i++)
-
asCaption[i] = dataGridView1.Columns[i].HeaderText;
-
ranCaption.Value2 = asCaption;
//数据
วัตถุ [] obj = วัตถุใหม่ [dataGridView1.Columns.Count];
สำหรับ (int r = 0; r < dataGridView1.RowCount - 1; r++)
-
สำหรับ (int l = 0; l < dataGridView1.Columns.Count; l++)
-
ถ้า (dataGridView1[l, r].ValueType == typeof(DateTime))
-
obj[l] = dataGridView1[l, r].Value.ToString();
-
อื่น
-
obj[l] = dataGridView1[l, r].ค่า;
-
-
สตริง cell1 = sLen + ((int)(r + 2)).ToString();
สตริง cell2 = "A" + ((int)(r + 2)).ToString();
วิ่งช่วง = worksheet.get_Range(cell1, cell2);//设置单元格
ran.Value2 = obj;
-
wnumber++;
-
//保存
สมุดงาน SaveCopyAs (this._fileName);
สมุดงาน.บันทึก=จริง;
-
ในที่สุด
-
//关闭
app.UserControl = เท็จ;
แอพ Quit();
-
-
-
-