using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Data.OleDb;5
using System.Data;6
using Excel;7
using System.Reflection;8

9
namespace OtherTools10
{11
public class OfficeUse12
{13
public OfficeUse()14
{ }15
/// <summary> 16
/// 读取Excel文档返回DataSet["table1"] 17
/// </summary> 18
/// <param name="Path">文件名称</param> 19
/// <returns>返回一个数据集</returns> 20
public DataSet ReadExcelToDS(string Path)21
{22
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";23
OleDbConnection conn = new OleDbConnection(strConn);24
conn.Open();25
string strExcel = "";26
OleDbDataAdapter myCommand = null;27
DataSet ds = null;28
strExcel = "select * from [sheet1$]";29
myCommand = new OleDbDataAdapter(strExcel, strConn);30
ds = new DataSet();31
myCommand.Fill(ds, "table1");32
return ds;33
}34
/// <summary>35
/// 根据数据表创建Excel36
/// </summary>37
/// <param name="dt">要创建的数据表DataTable</param>38
public void CreateExcelWorkbook(System.Data.DataTable dt)39
{40

41

42
//RemoveFiles(strCurrentDir); // utility method to clean up old files 43

44
Excel.Application oXL;45
Excel._Workbook oWB;46
Excel._Worksheet oSheet;47
Excel.Range oRng;48
try49
{50
GC.Collect();51
oXL = new Excel.Application();52
oXL.Visible = true;53
//Get a new workbook.54
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));55
oSheet = (Excel._Worksheet)oWB.ActiveSheet;56
// Create Header and sheet
57
for (int j = 0; j < dt.Columns.Count; j++)58
{59
oSheet.Cells[1, j + 1] = dt.Columns[j].Caption.ToString();60
}61
int ri = 1;62
int di = 0;63
foreach (DataRow dr in dt.Rows)64
{65
ri++;66
di = 0;67
foreach (DataColumn dc in dt.Columns)68
{69
di++;70
oSheet.Cells[ri, di] = dr[dc.ColumnName].ToString();71
}72
}73
// build the sheet contents74

75
//Format A1:Z1 as bold, vertical alignment = center. 76
oSheet.get_Range("A1", "Z1").Font.Bold = true;77
oSheet.get_Range("A1", "Z1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;78
//AutoFit columns A:Z.79
oRng = oSheet.get_Range("A1", "Z1");80
oRng.EntireColumn.AutoFit();81
//oXL.Visible = false;82
//oXL.UserControl = false;83
//string strFile = "report" + System.DateTime.Now.Ticks.ToString() + ".xls";84
//oWB.SaveAs(strCurrentDir + strFile, Excel.XlFileFormat.xlWorkbookNormal,85
//null, null, false, false, Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);86
//// Need all following code to clean up and extingush all references!!!87
//oWB.Close(null, null, null);88
//oXL.Workbooks.Close();89
//oXL.Quit();90
//System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng);91
//System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);92
//System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);93
//System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);94
//oSheet = null;95
//oWB = null;96
//oXL = null;97
//GC.Collect(); // force final cleanup!98
}99

100
catch (Exception theException)101
{102

103
String errorMessage;104

105
errorMessage = "Error: ";106

107
errorMessage = String.Concat(errorMessage, theException.Message);108

109
errorMessage = String.Concat(errorMessage, " Line: ");110

111
errorMessage = String.Concat(errorMessage, theException.Source);112
System.Windows.Forms.MessageBox.Show("导出未能完成:" + errorMessage);113
KillProcess("Excel");114
}115
finally116
{117
118
}119

120
}121
/// <summary>122
/// 杀死运行中的进程123
/// </summary>124
/// <param name="processName">进程名</param>125
public void KillProcess(string processName)126
{127
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName(processName);128

129
foreach (System.Diagnostics.Process procCur in procs)130
{131
procCur.Kill();132
procCur.Close();133
}134
}135

136

137

138

139

140
/// <summary> 141
/// 写入Excel文档 142
/// </summary> 143
/// <param name="Path">文件名称</param> 144
//public bool SaveFP2toExcel(string Path)145
//{146
// try147
// {148
// string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";149
// OleDbConnection conn = new OleDbConnection(strConn);150
// conn.Open();151
// System.Data.OleDb.OleDbCommand cmd = new OleDbCommand();152
// cmd.Connection = conn;153
// for (int i = 0; i < fp2.Sheets[0].RowCount - 1; i++)154
// {155
// if (fp2.Sheets[0].Cells[i, 0].Text != "")156
// {157
// cmd.CommandText = "INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('" + fp2.Sheets[0]. Cells[i, 0].Text + "','" +158
// fp2.Sheets[0].Cells[i, 1].Text + "','" + fp2.Sheets[0].Cells[i, 2].Text + "','" + fp2.Sheets[0].Cells[i, 3].Text +159
// "','" + fp2.Sheets[0].Cells[i, 4].Text + "','" + fp2.Sheets[0].Cells[i, 5].Text + "')";160
// cmd.ExecuteNonQuery();161
// }162
// }163
// conn.Close();164
// return true;165
// }166
// catch (System.Data.OleDb.OleDbException ex)167
// {168
// System.Diagnostics.Debug.WriteLine("写入Excel发生错误:" + ex.Message);169
// }170
// return false;171
//}172

173
}174
}
