1 /// <summary>
2 /// 构造函数
3 /// </summary>
4 public ExportData()
5 {
6
7 }
8 /// <summary>
9 /// 保存文件名
10 /// </summary>
11 private string savefilename = "";
12 /// <summary>
13 /// 准备导出的数据容器
14 /// </summary>
15 private System.Windows.Forms.DataGridView datagv;
16 /// <summary>
17 /// 导出excel文档
18 /// </summary>
19 /// <param name="d">数据所在控件</param>
20 public void OutDataToExcelByDataSource(System.Windows.Forms.DataGridView dgview)
21 {
22 try
23 {
24 if (dgview.Columns.Count < 1)
25 {
26 MessageBox.Show("没有导出数据。");
27 return;
28 }
29 SaveFileDialog sfd = new SaveFileDialog();
30 sfd.ValidateNames = true;
31 sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf";
32 if (sfd.ShowDialog() != DialogResult.OK)
33 {
34 return;
35 }
36 this.savefilename = sfd.FileName;
37 //检测文件名是否合法
38 string tryfile = "";
39 tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + 1);
40 tryfile = tryfile.Substring(0, tryfile.LastIndexOf("."));
41 foreach (char c in tryfile)
42 {
43 if ("<>?:[]|*".Contains(c.ToString()))
44 {
45 MessageBox.Show("文件名包含非法字符.");
46 return;
47 }
48 }
49 this.datagv = dgview;
50 if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".xls")
51 {
52 outToExcelByDataSource();
53 }
54 else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".dbf")
55 {
56 outToAccessByDataSource();
57 }
58 }
59 catch (Exception W)
60 {
61 MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
62 }
63 }
64 /// <summary>
65 /// 导出excel文档
66 /// </summary>
67 /// <param name="d">数据所在控件</param>
68 public void OutDataToExcelByDataTable(System.Windows.Forms.DataGridView dgview)
69 {
70 try
71 {
72 if (dgview.Columns.Count < 1)
73 {
74 MessageBox.Show("没有导出数据。");
75 return;
76 }
77 SaveFileDialog sfd = new SaveFileDialog();
78 sfd.ValidateNames = true;
79 sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf"; ;
80 if (sfd.ShowDialog() != DialogResult.OK)
81 {
82 return;
83 }
84 this.savefilename = sfd.FileName;
85 //检测文件名是否合法
86 string tryfile = "";
87 tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + 1);
88 tryfile = tryfile.Substring(0, tryfile.LastIndexOf("."));
89 foreach (char c in tryfile)
90 {
91 if ("<>?:[]|*".Contains(c.ToString()))
92 {
93 MessageBox.Show("文件名包含非法字符.");
94 return;
95 }
96 }
97 this.datagv = dgview;
98 if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xls")
99 {
100 outToExcelByDataTable();
101 }
102 else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".dbf")
103 {
104 outToAccessByDataTable();
105 }
106 }
107 catch (Exception W)
108 {
109 MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
110 }
111 }
112 /// <summary>
113 /// 导出文档
114 /// </summary>
115 public void OutDataByDataTable(DataTable tab)
116 {
117 try
118 {
119 if (tab.Columns.Count < 1)
120 {
121 MessageBox.Show("没有导出数据。");
122 return;
123 }
124 SaveFileDialog sfd = new SaveFileDialog();
125 sfd.ValidateNames = true;
126 sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf";
127 if (sfd.ShowDialog() != DialogResult.OK)
128 {
129 return;
130 }
131 this.savefilename = sfd.FileName;
132 //检测文件名是否合法
133 string tryfile = "";
134 tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + 1);
135 tryfile = tryfile.Substring(0, tryfile.LastIndexOf("."));
136 foreach (char c in tryfile)
137 {
138 if ("<>?:[]|*".Contains(c.ToString()))
139 {
140 MessageBox.Show("文件名包含非法字符.");
141 return;
142 }
143 }
144 if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xls")
145 {
146 ExportExcelForm of = new ExportExcelForm();
147 of.mytable = tab;
148 if (of.mytable == null)
149 {
150 MessageBox.Show("没有导出数据。");
151 return;
152 }
153 of.savefimename = this.savefilename;
154 of.Show();
155 }
156 else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".dbf")
157 {
158 ExportAccessForm of = new ExportAccessForm();
159 of.mytable = tab;
160 if (of.mytable == null)
161 {
162 MessageBox.Show("没有导出数据。");
163 return;
164 }
165 of.savefimename = this.savefilename;
166 of.Show();
167 }
168 }
169 catch (Exception W)
170 {
171 MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
172 }
173 }
174 /// <summary>
175 /// 弹出导出窗口
176 /// </summary>
177 private void outToExcelByDataSource()
178 {
179 ExportExcelForm of = new ExportExcelForm();
180 of.mytable = (DataTable)this.datagv.DataSource;
181 if (of.mytable == null)
182 {
183 MessageBox.Show("没有导出数据。");
184 return;
185 }
186 of.savefimename = this.savefilename;
187 of.Show();
188 }
189 /// <summary>
190 /// 弹出导出窗口
191 /// </summary>
192 private void outToExcelByDataTable()
193 {
194 ExportExcelForm of = new ExportExcelForm();
195
196 DataTable dt = new DataTable();
197 for (int i = 0; i < this.datagv.ColumnCount; i++)
198 {
199 dt.Columns.Add(this.datagv.Columns[i].HeaderText);
200 }
201 DataRow dr;
202 for (int i = 0; i < this.datagv.RowCount; i++)
203 {
204 dr = dt.NewRow();
205 for (int j = 0; j < this.datagv.ColumnCount; j++)
206 {
207 if (this.datagv.Columns[j].HeaderText == "sqlstring")
208 {
209 dr[j] = "";
210 }
211 else
212 {
213 if (this.datagv.Rows[i].Cells[j].Value == null)
214 {
215 dr[j] = "";
216 }
217 else
218 {
219 dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
220 }
221 }
222 }
223 dt.Rows.Add(dr);
224 }
225 of.mytable = dt;
226 if (of.mytable == null)
227 {
228 MessageBox.Show("没有导出数据。");
229 return;
230 }
231 of.savefimename = this.savefilename;
232 of.Show();
233 }
234 /// <summary>
235 /// 弹出导出窗口
236 /// </summary>
237 private void outToAccessByDataSource()
238 {
239 if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".mdb")
240 {
241 ExportAccessForm of = new ExportAccessForm();
242 of.mytable = (DataTable)this.datagv.DataSource;
243 if (of.mytable == null)
244 {
245 MessageBox.Show("没有导出数据。");
246 return;
247 }
248 of.savefimename = this.savefilename;
249 of.Show();
250 }
251 else if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".dbf")
252 {
253 ExportDBFForm of = new ExportDBFForm();
254 of.mytable = (DataTable)this.datagv.DataSource;
255 if (of.mytable == null)
256 {
257 MessageBox.Show("没有导出数据。");
258 return;
259 }
260 of.savefimename = this.savefilename;
261 of.Show();
262 }
263 }
264 /// <summary>
265 /// 弹出导出窗口
266 /// </summary>
267 private void outToAccessByDataTable()
268 {
269 try
270 {
271 if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".mdb")
272 {
273 ExportAccessForm of = new ExportAccessForm();
274 DataTable dt = new DataTable();
275 for (int i = 0; i < this.datagv.ColumnCount; i++)
276 {
277 dt.Columns.Add(this.datagv.Columns[i].HeaderText);
278 }
279 DataRow dr;
280 for (int i = 0; i < this.datagv.RowCount; i++)
281 {
282 dr = dt.NewRow();
283 for (int j = 0; j < this.datagv.ColumnCount; j++)
284 {
285 if (this.datagv.Columns[j].HeaderText == "sqlstring")
286 {
287 dr[j] = "";
288 }
289 else
290 {
291 if (this.datagv.Rows[i].Cells[j].Value == null)
292 {
293 dr[j] = "";
294 }
295 else
296 {
297 dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
298 }
299 }
300 }
301 dt.Rows.Add(dr);
302 }
303 of.mytable = dt;
304 if (of.mytable == null)
305 {
306 MessageBox.Show("没有导出数据。");
307 return;
308 }
309 of.savefimename = this.savefilename;
310 of.Show();
311 }
312 else if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".dbf")
313 {
314 ExportDBFForm of = new ExportDBFForm();
315 DataTable dt = new DataTable();
316 for (int i = 0; i < this.datagv.ColumnCount; i++)
317 {
318 dt.Columns.Add(this.datagv.Columns[i].HeaderText);
319 }
320 DataRow dr;
321 for (int i = 0; i < this.datagv.RowCount; i++)
322 {
323 dr = dt.NewRow();
324 for (int j = 0; j < this.datagv.ColumnCount; j++)
325 {
326 if (this.datagv.Columns[j].HeaderText == "sqlstring")
327 {
328 dr[j] = "";
329 }
330 else
331 {
332 if (this.datagv.Rows[i].Cells[j].Value == null)
333 {
334 dr[j] = "";
335 }
336 else
337 {
338 dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
339 }
340 }
341 }
342 dt.Rows.Add(dr);
343 }
344 of.mytable = dt;
345 if (of.mytable == null)
346 {
347 MessageBox.Show("没有导出数据。");
348 return;
349 }
350 of.savefimename = this.savefilename;
351 of.Show();
352 }
353 }
354 catch
355 {
356
357 }
358 }