[转载]一个Office 经典操作类
1
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 OtherTools
10
{
11
public class OfficeUse
12
{
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
/// 根据数据表创建Excel
36
/// </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
try
49
{
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 contents
74
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
finally
116
{
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
// try
147
// {
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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56


57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174
