您的位置:首页 > 其它

excel和DataSet之间互相转化

2009-09-15 16:13 405 查看
1 public class ImportExportToExcel
2 {
3 private string strConn ;
4
5 private System.Windows.Forms.OpenFileDialog openFileDlg=new System.Windows.Forms.OpenFileDialog();
6 private System.Windows.Forms.SaveFileDialog saveFileDlg=new System.Windows.Forms.SaveFileDialog();
7
8 public ImportExportToExcel()
9 {
10 //
11 // TODO: 在此处添加构造函数逻辑
12 //
13 this.openFileDlg.DefaultExt = "xls";
14 this.openFileDlg.Filter = "Excel文件 (*.xls)|*.xls";
15
16 this.saveFileDlg.DefaultExt="xls";
17 this.saveFileDlg.Filter= "Excel文件 (*.xls)|*.xls";
18
19 }
20
21 从Excel文件导入到DataSet#region 从Excel文件导入到DataSet
22 // /// <summary>
23 // /// 从Excel导入文件
24 // /// </summary>
25 // /// <param name="strExcelFileName">Excel文件名</param>
26 // /// <returns>返回DataSet</returns>
27 // public DataSet ImportFromExcel(string strExcelFileName)
28 // {
29 // return doImport(strExcelFileName);
30 // }
31 /**//// <summary>
32 /// 从选择的Excel文件导入
33 /// </summary>
34 /// <returns>DataSet</returns>
35 public DataSet ImportFromExcel()
36 {
37 DataSet ds=new DataSet();
38 if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
39 ds=doImport(openFileDlg.FileName);
40 return ds;
41 }
42 /**//// <summary>
43 /// 从指定的Excel文件导入
44 /// </summary>
45 /// <param name="strFileName">Excel文件名</param>
46 /// <returns></returns>
47 public DataSet ImportFromExcel(string strFileName)
48 {
49 DataSet ds=new DataSet();
50 ds=doImport(strFileName);
51 return ds;
52 }
53 /**//// <summary>
54 /// 执行导入
55 /// </summary>
56 /// <param name="strFileName">文件名</param>
57 /// <returns>DataSet</returns>
58 private DataSet doImport(string strFileName)
59 {
60 if (strFileName=="") return null;
61
62 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
63 "Data Source=" + strFileName + ";" +
64 "Extended Properties=Excel 8.0;";
65 OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
66
67 DataSet ExcelDs = new DataSet();
68 try
69 {
70 ExcelDA.Fill(ExcelDs, "ExcelInfo");
71
72 }
73 catch(Exception err)
74 {
75 System.Console.WriteLine( err.ToString() );
76 }
77 return ExcelDs;
78
79
80
81 }
82 #endregion
83
84 从DataSet到出到Excel#region 从DataSet到出到Excel
85 /**//// <summary>
86 /// 导出指定的Excel文件
87 /// </summary>
88 /// <param name="ds">要导出的DataSet</param>
89 /// <param name="strExcelFileName">要导出的Excel文件名</param>
90 public void ExportToExcel(DataSet ds,string strExcelFileName)
91 {
92 if (ds.Tables.Count==0 || strExcelFileName=="") return;
93 doExport(ds,strExcelFileName);
94
95
96 }
97 /**//// <summary>
98 /// 导出用户选择的Excel文件
99 /// </summary>
100 /// <param name="ds">DataSet</param>
101 public void ExportToExcel(DataSet ds)
102 {
103 if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
104 doExport(ds,saveFileDlg.FileName);
105
106 }
107 /**//// <summary>
108 /// 执行导出
109 /// </summary>
110 /// <param name="ds">要导出的DataSet</param>
111 /// <param name="strExcelFileName">要导出的文件名</param>
112 private void doExport(DataSet ds,string strExcelFileName)
113 {
114
115 Excel.Application excel= new Excel.Application();
116
117 // Excel.Workbook obj=new Excel.WorkbookClass();
118 // obj.SaveAs("c:\zn.xls",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);
119
120 int rowIndex=1;
121 int colIndex=0;
122
123 excel.Application.Workbooks.Add(true);
124
125
126 System.Data.DataTable table=ds.Tables[0] ;
127 foreach(DataColumn col in table.Columns)
128 {
129 colIndex++;
130 excel.Cells[1,colIndex]=col.ColumnName;
131 }
132
133 foreach(DataRow row in table.Rows)
134 {
135 rowIndex++;
136 colIndex=0;
137 foreach(DataColumn col in table.Columns)
138 {
139 colIndex++;
140 excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
141 }
142 }
143 excel.Visible=false;
144 excel.Sheets[0] = "sss";
145 excel.ActiveWorkbook.SaveAs(strExcelFileName+".XLS",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);
146
147
148 //wkbNew.SaveAs strBookName
149
150
151 //excel.Save(strExcelFileName);
152 excel.Quit();
153 excel=null;
154
155 GC.Collect();//垃圾回收
156 }
157 #endregion
158
159 从XML导入到Dataset#region 从XML导入到Dataset
160
161 /**//// <summary>
162 /// 从选择的XML文件导入
163 /// </summary>
164 /// <returns>DataSet</returns>
165 public DataSet ImportFromXML()
166 {
167 DataSet ds=new DataSet();
168 System.Windows.Forms.OpenFileDialog openFileDlg=new System.Windows.Forms.OpenFileDialog();
169 openFileDlg.DefaultExt="xml";
170 openFileDlg.Filter= "xml文件 (*.xml)|*.xml";
171 if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
172 try{ds.ReadXml(openFileDlg.FileName,System.Data.XmlReadMode.ReadSchema);}
173 catch{}
174 return ds;
175 }
176 /**//// <summary>
177 /// 从指定的XML文件导入
178 /// </summary>
179 /// <param name="strFileName">XML文件名</param>
180 /// <returns></returns>
181 public DataSet ImportFromXML(string strFileName)
182 {
183 if (strFileName=="")
184 return null;
185 DataSet ds=new DataSet();
186 try{ds.ReadXml(strFileName,System.Data.XmlReadMode.ReadSchema);}
187 catch{}
188 return ds;
189 }
190
191 #endregion
192
193 从DataSet导出到XML#region 从DataSet导出到XML
194 /**//// <summary>
195 /// 导出指定的XML文件
196 /// </summary>
197 /// <param name="ds">要导出的DataSet</param>
198 /// <param name="strXMLFileName">要导出的XML文件名</param>
199 public void ExportToXML(DataSet ds,string strXMLFileName)
200 {
201 if (ds.Tables.Count==0 || strXMLFileName=="") return;
202 doExportXML(ds,strXMLFileName);
203 }
204 /**//// <summary>
205 /// 导出用户选择的XML文件
206 /// </summary>
207 /// <param name="ds">DataSet</param>
208 public void ExportToXML(DataSet ds)
209 {
210 System.Windows.Forms.SaveFileDialog saveFileDlg=new System.Windows.Forms.SaveFileDialog();
211 saveFileDlg.DefaultExt="xml";
212 saveFileDlg.Filter= "xml文件 (*.xml)|*.xml";
213 if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
214 doExportXML(ds,saveFileDlg.FileName);
215 }
216
217 /**//// <summary>
218 /// 执行导出
219 /// </summary>
220 /// <param name="ds">要导出的DataSet</param>
221 /// <param name="strExcelFileName">要导出的XML文件名</param>
222 private void doExportXML(DataSet ds,string strXMLFileName)
223 {
224 try
225 {ds.WriteXml(strXMLFileName,System.Data.XmlWriteMode.WriteSchema );}
226 catch(Exception ex)
227 {System.Windows.Forms.MessageBox.Show(ex.Message,"Errol") ;}
228 }
229
230 #endregion
231
232
233
234 }
235
可能用进程的强制删除方法:kill()

1 #region "强制结束Word进程(垃圾回收)"
2 /// <summary>
3 /// 强制结束Word进程(垃圾回收)
4 /// </summary>
5 public void KillWordProcess()
6 {
7 int ProceedingCount = 0;
8 try
9 {
10 System.Diagnostics.Process [] ProceddingCon = System.Diagnostics.Process.GetProcesses();
11 foreach(System.Diagnostics.Process IsProcedding in ProceddingCon)
12 {
13 if(IsProcedding.ProcessName.ToUpper() == "WINWORD")
14 {
15 ProceedingCount += 1;
16 IsProcedding.Kill();
17 }
18 }
19 }
20 catch(System.Exception err)
21 {
22 MessageBox.Show(err.Message + "\r" +"(" + err.Source + ")" + "\r" + err.StackTrace);
23 }
24 }
25 #endregion

关于Excel进程一直驻留的,参考:
http://support.microsoft.com/?scid=kb;zh-cn;317109&spid=1108&sid=152
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: