C#遍历获取文件信息导出至EXCEL

记录八月份写的一个小工具,当需要处理的很多数据在文件名中存在时,
1,使用Directory类下的GetDirectories方法根据文件地址打开文件获取目录。
2,然后再使用DirectoryInfo类下的GetFiles获取具体文件。
3,根据具体文件获取文件名,大小等信息。
4,导出至EXCEL

命名空间注意:
File类需要System.IO
Excel需要Aspose.Cells
一、选择文件夹返回文件地址

private void btn_Select_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FBDialog = new FolderBrowserDialog();
            if (FBDialog.ShowDialog() == DialogResult.OK)
            {
                string strPath = FBDialog.SelectedPath;
                txt_File.Text = strPath;
            }
        }

二、遍历获取当前文件夹下的文件信息
winform窗体中可以有一个ListViewItem组件,便于返回文件信息。


private void button2_Click(object sender, EventArgs e)
        {
            try
            {
            DirectoryInfo dir2 = new DirectoryInfo(txt_File.Text);
            foreach (FileInfo file in dir2.GetFiles("*.wav"))
            {
                ListViewItem item = new ListViewItem();
                // strAA = strAA + file.Name +"   "+file.Length/1024+"kb"+ "\r\n";
                item.Text = file.Name.Substring(0, 8);
                item.SubItems.Add(file.Name.Substring(9, 6));
                item.SubItems.Add(file.Name.Substring(17, 5));
                item.SubItems.Add(file.Length / 1024 + "kb");
                listView1.Items.Add(item);//代码中创建的ListViewItem中的item信息返回给winform中创建的listView组件。

            }                        
            }
            catch
            {

            }
        }

三、遍历获取三级文件夹下的文件

        private void button1_Click(object sender, EventArgs e)
    {

        try
        {
            string[] dirs = Directory.GetDirectories(txt_File.Text);

            for (int i = 0; i < dirs.Length; i++)
            {
                string[] udirs = Directory.GetDirectories(dirs[i]);
                for (int j = 0; j < udirs.Length; j++)
                {
                    DirectoryInfo dir = new DirectoryInfo(udirs[j]);
                    foreach (FileInfo file in dir.GetFiles("*.wav"))//获取wav文件的分段的文件名信息和大小,详细可参考GetFiles的具体用法。
                    {
                        ListViewItem item = new ListViewItem();
                        // strAA = strAA + file.Name +"   "+file.Length/1024+"kb"+ "\r\n";
                        item.Text = file.Name.Substring(0,8);
                        item.SubItems.Add(file.Name.Substring(9, 6));
                        item.SubItems.Add(file.Name.Substring(17, 5));
                        item.SubItems.Add(file.Length / 1024 + "kb");
                        listView1.Items.Add(item);

                    }
                }

            }

        }
        catch
        {

        }
    }

四、将listView组件里的信息导出至EXCEL
(一)、导出至EXCEL的函数

public void SaveToExcel(ListView listview, /*List<int> columnwidth,*/ string title)
        {
            string path;
            SaveFileDialog filedialog = new SaveFileDialog();
            filedialog.Filter = "Excel file(*,xls)|*.xls";
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                path = filedialog.FileName;
                //新建excel
                Workbook wb = new Workbook();
                Worksheet ws = wb.Worksheets[0];
                Cells cell = ws.Cells;
                //储存数据到数组
                string[,] _dataReport = new string[listview.Items.Count, listview.Columns.Count];
                for (int i = 0; i < listview.Items.Count; i++)
                {
                    for (int j = 0; j < listview.Columns.Count; j++)
                    {
                        _dataReport[i, j] = listview.Items[i].SubItems[j].Text.ToString();
                    }
                }
                Range range1 = cell.CreateRange(0, 0, 2, listview.Columns.Count);
                range1.Merge();
                //标题style
                cell.SetRowHeight(0, 40);
                Style style1 = wb.Styles[wb.Styles.Add()];
                style1.HorizontalAlignment = TextAlignmentType.Center;
                style1.Font.Name = "宋体";
                style1.Font.IsBold = true;
                style1.Font.Size = 20;
                //内容style
                Style style2 = wb.Styles[wb.Styles.Add()];
                style2.HorizontalAlignment = TextAlignmentType.Center;
                style2.Font.Size = 14;
                //储存标题和内容(A1和此时(0,0)一样)
                cell["A1"].PutValue(title);
                cell["A1"].SetStyle(style1);
                //第二行内容
               
                cell[2, 0].PutValue("名称1");
                cell[2, 1].PutValue("名称2");
                
                cell[2, 0].SetStyle(style2);
                cell[2, 1].SetStyle(style2);
                //第三行以后内容
                int posStart = 3;
                for (int i = 0; i < listview.Items.Count; i++)
                {
                    for (int j = 0; j < listview.Columns.Count; j++)
                    {
                        cell[i + posStart, j].PutValue(_dataReport[i, j].ToString());
                        cell[i + posStart, j].SetStyle(style2);
                    }
                }
                //合并单元格显示时间(注意合并完之后,对于本身的行变量和列变量的计数并没有变化。)(B5和此时(4,1)一样)
               /* Range range2 = cell.CreateRange(4, 1, 1, 2);
                range2.Merge();
                cell["B5"].PutValue(_dataReport[listview.Items.Count - 1, listview.Columns.Count - 1].ToString());
                cell["B5"].SetStyle(style2);
                for (int i = 0; i < listview.Columns.Count; i++)
                {
                    cell.SetColumnWidth(i, Convert.ToDouble(columnwidth[i].ToString()));
                }*/
                //储存
                try
                {
                    wb.Save(path);
                    MessageBox.Show("成功");
                    //textBox5.AppendText(DateTime.Now.ToString() + " 储存成功。位置:" + path.ToString() + "\r\n");
                }
                catch (Exception e)
                {
                    MessageBox.Show("失败,原因:" + e);
                    //textBox5.AppendText(DateTime.Now.ToString() + "储存失败。");
                }
            }

        }

(二)、调用函数

 private void btn_Put_Click(object sender, EventArgs e)
        {
            SaveToExcel(listView1,"获取的数据");
        }

猜你喜欢

转载自blog.csdn.net/weixin_41732430/article/details/83004047