C#将ListBox中的内容导出到Excel文件中


前言

以下内容为工作学习时的记录总结
参考博客来源:https://blog.csdn.net/qq_30507287/article/details/53856267


一、添加引用

添加相应dll的引用,然后在程序中添加如下命名空间。
using Microsoft.Office.Interop.Excel;

二、具体代码

1.自定义Student类

代码如下:

    public class Student
    {
        private string id;
        public string Id { get { return id; } set { id = value; } }
 
        private string name;
        public string Name { get { return name; } set { name = value; } }
 
        private string age;
        public string Age { get { return age; } set { age = value; } }
    }

2.用反射获取类型的所有属性

用于后续生成所有Column的标题

代码如下:

        private PropertyInfo[] GetPropertyInfoArray()
        {
            PropertyInfo[] props = null;
            try
            {
                Type type = typeof(Student);
                object obj = Activator.CreateInstance(type);
                props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            }
            catch (Exception ex)
            { }
            return props;
        }

3.生成Excel文件

代码如下:

        private void SaveDataToExcelFile()
        {
            object misValue = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);
            Worksheet xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);

            PropertyInfo[] props = GetPropertyInfoArray();
            for (int i = 0; i < props.Length; i++)
            {
                xlWorkSheet.Cells[1, i + 1] = props[i].Name; //生成Excel列标题
            }
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                xlWorkSheet.Cells[i + 2, 1] = Regex.Split(listBox1.Items[i].ToString()," ")[0]; //ListBox第i行第一列
                xlWorkSheet.Cells[i + 2, 2] = Regex.Split(listBox1.Items[i].ToString()," ")[1]; //ListBox第i行第二列
                xlWorkSheet.Cells[i + 2, 3] = Regex.Split(listBox1.Items[i].ToString()," ")[2]; //ListBox第i行第二列
            }
            try
            {
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.InitialDirectory = Directory.GetCurrentDirectory() + "\\data\\";
                sfd.Filter = "Excel表格|*.xls";
                sfd.ShowDialog();
                string path = sfd.FileName;
                xlWorkBook.SaveAs(path, XlFileFormat.xlExcel7, misValue, misValue, misValue, misValue,
                    XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();
                MessageBox.Show("保存成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

切记:保存后需将生成的Excel释放,否则会一直出现占用的情况。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值