首页 > 代码库 > Nopi数据写入Excel

Nopi数据写入Excel

Nopi数据写入Excel

 

前几天,在落伍者的现金任务无意中结识一个哥们,他有这样一个需求。因为是搞小软件销售的,所以,其在一个盘符中存储有大量数据(主要是文件夹),大概有12000多个,时间长了,他想整理一下,就是将文件夹的名称写入一个文件里,文本文件或是xls最好是xls,于是我50大元接了这个小活,全当是玩了,呵呵。
通过分析需求,其获取所有的文夹名称不是难点,写入xls可以通过NOP 实现。综合,通过一个Winform程序,顺利实现。
程序运行如图:

图片
代码如下:

public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button2_Click(object sender, EventArgs e)        {//显示打开文件对话框,注意反回类型为result类型,是一个枚举类型啊。            DialogResult result = openFileDialog1.ShowDialog();            if (result == DialogResult.OK)            {//当点击OK时,则通过 Path.GetDirectoryName方法,获得当前的想要操作的目录名称。这里做得有点笨,就是必须在当前的目录里得有一个文件,否则,选不到,这个问题没能解决。                txtFile.Text = Path.GetDirectoryName(openFileDialog1.FileName);            }        }        private void button1_Click(object sender, EventArgs e)        {//通过静态类DirectoryInfo的构造函数得当前目录的info对象            DirectoryInfo difo = new DirectoryInfo(txtFile.Text);            //通过difo.GetDirectories方法获取当前目录下的所有的同级目录集合(这步很重要啊)            DirectoryInfo[] subdifs = difo.GetDirectories();            //到此,可以通过nopi建立一个工作薄了。当然是HSSFWorkbook对象,我用的是旧版,不知道新版是什么对象,应该大概是类似的吧。            HSSFWorkbook wk = new HSSFWorkbook();            //通过工作薄建立工作表            HSSFSheet sheet = wk.CreateSheet("目录表");            //为了使用表格标准点,取数据前先建立一个标题行,呵。            HSSFRow row0 = sheet.CreateRow(0);            row0.CreateCell(0).SetCellValue("序号");            row0.CreateCell(1).SetCellValue("名称");            row0.CreateCell(2).SetCellValue("建立时间");            //循环遍历每个目录对象,这个过程也是建立行的过程,每行写入一个目录的信息。            for (int i = 0; i < subdifs.Length; i++)            {//建立行,但要注意,因为有标题栏的存在,要在i的基础上加上1,否则标题栏会被覆盖的。                HSSFRow subrow = sheet.CreateRow(i + 1);                subrow.CreateCell(0).SetCellValue((i + 1).ToString());//写入编号                subrow.CreateCell(1).SetCellValue(subdifs[i].Name.ToString());//写入目录名称                subrow.CreateCell(2).SetCellValue(subdifs[i].CreationTime.ToString());//写入建立时间            }            //设置保存类型为.xls            saveFileDialog1.Filter = "(*.xls)|*.xls";            //显示保存文件对话框,注意返回类型            DialogResult result = saveFileDialog1.ShowDialog();            if (result == DialogResult.OK)            {//建立文件流对象,通过保存文件对话框的filename属性。                using (FileStream fs = File.OpenWrite(saveFileDialog1.FileName))                {//应用工作薄Write方法,最后将工作薄写入文件流,并保存于磁盘上。                    wk.Write(fs);                    MessageBox.Show("导出成功!");                }            }        }    }

 

Nopi数据写入Excel