哪位兄弟能解释一下这段程序,最好逐行解释!谢谢!

2025-01-02 11:00:46
推荐回答(3个)
回答1:

public void OutputPersonInfo(System.Data.DataTable dt, string fileName)
{
System.Diagnostics.Process[] arrProcesses;
arrProcesses = System.Diagnostics.Process.GetProcessesByName("Excel");//得到与"Excel'关联的所有进程的一个数组
foreach (System.Diagnostics.Process myProcess in arrProcesses)
{
myProcess.Kill();//遍历,关闭进程
}

Object missing = Missing.Value;
Microsoft.Office.Interop.Excel.Application m_objExcel =
new Microsoft.Office.Interop.Excel.Application();
Workbooks m_objWorkBooks = m_objExcel.Workbooks;
Workbook m_objWorkBook = m_objWorkBooks.Add(true);//打开一个Excel文件
Sheets m_objWorkSheets = m_objWorkBook.Sheets; ;
Worksheet m_objWorkSheet = (Worksheet)m_objWorkSheets[1];//打开一个sheet,即excel里的一个表
int intFeildCount = dt.Columns.Count;//获取dt表的列数
for (int col = 0; col < intFeildCount; col++)
{
m_objWorkSheet.Cells[1, col + 1] = dt.Columns[col].ToString();//把dt的列名写到Excel表的第一列。(因为Excel表的行列计数是从1开始的,而dt的行列计数是从0开始的,所以要+1)
}
for (int intRowCount = 0; intRowCount < dt.Rows.Count; intRowCount++)
{
for (int intCol = 0; intCol < dt.Columns.Count; intCol++)
{
//遍历dt表的行,把每一行写到Excel
m_objWorkSheet.Cells[intRowCount + 2, intCol + 1] = "'" + dt.Rows[intRowCount][intCol].ToString();
}
}

if (File.Exists(fileName))//判断fileName这个文件名是否存在,系统会自动加上默认路径即你的Debug里,实际应用中不能这样写,应该弄个对话框让用户自己选路径。
{
File.Delete(fileName);//如果存在这个文件就删除.(记得传参数的时候不要忘了后缀名 .xls。
}
//保存Excel..就是调用Excel的“另存为”的功能,路径也是默认的,实际应用也不能这样,应该弄个对话框让用户自己选路径。
//实际上SaveAs会自动判断该路径是否存在同名文件,若存在,会跳出对话框,问你是否覆盖,若点“否”或“取消”,都会发生异常,建议弄个try..catch捕捉异常。
//这样,实际上上面那个判断语句是多此一举,可以删掉
m_objWorkBook.SaveAs(fileName, missing, missing, missing, missing,
missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
missing, missing, missing, missing, missing);
m_objExcel = null;//关闭Excel.
}

回答2:

不知道,我JAVA会的不是很深,知道了能不能告诉我一下!

回答3:

很明显不是Java的嘛,1楼的看错了吧。.net的程序。
应该是统计Excel的一段程序,不过要一句一句解释出来,就费事了哦。