Example #1
0
        private void btnOut_Click(object sender, EventArgs e)
        {
            if (listView1.Items.Count == 0)
            {
                return;
            }
            saveFileDialog1.Filter        = "Excel File|*.xls";
            saveFileDialog1.Title         = "数据导出";
            this.saveFileDialog1.FileName = FormArg.Name;
            string path = string.Empty;

            if (saveFileDialog1.ShowDialog() != DialogResult.Cancel)
            {
                path = saveFileDialog1.FileName;
                ListViewExport.ExportToExcel(listView1, path, "1", true);
                if (ListViewExport.IsExistsExcel())
                {
                    if (DialogResult.Yes == MessageBox.Show("是否打开该文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1))
                    {
                        ListViewExport.OpenExcel(path);
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// 将ListView中的数据导出到指定的Excel文件中
        /// </summary>
        /// <param name="listView">System.Windows.Forms.ListView,指定要导出的数据源</param>
        /// <param name="destFileName">指定目标文件路径</param>
        /// <param name="tableName">要导出到的表名称</param>
        /// <param name="overWrite">指定是否覆盖已存在的表</param>
        /// <returns>导出的记录的行数</returns>
        public static int ExportToExcel(ListView listView, string destFileName, string tableName, bool overWrite)
        {
            //得到字段名
            string szFields = "";
            string szValues = "";

            for (int i = 0; i < listView.Columns.Count; i++)
            {
                szFields += "[" + listView.Columns[i].Text + "],";
            }
            szFields = szFields.TrimEnd(',');
            //定义数据连接
            OleDbConnection connection = new OleDbConnection();

            connection.ConnectionString = ListViewExport.GetConnectionString(destFileName);
            OleDbCommand command = new OleDbCommand();

            command.Connection  = connection;
            command.CommandType = CommandType.Text;
            //打开数据库连接
            try
            {
                connection.Open();
            }
            catch
            {
                throw new Exception("目标文件路径错误。");
            }
            //创建数据库表
            try
            {
                command.CommandText = ListViewExport.GetCreateTableSql("[" + tableName + "]", szFields.Split(','));
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                //如果允许覆盖则删除已有数据
                if (overWrite)
                {
                    try
                    {
                        command.CommandText = "DROP TABLE [" + tableName + "]";
                        command.ExecuteNonQuery();
                        command.CommandText = ListViewExport.GetCreateTableSql("[" + tableName + "]", szFields.Split(','));
                        command.ExecuteNonQuery();
                    }
                    catch (Exception ex1)
                    {
                        throw ex1;
                    }
                }
                else
                {
                    throw ex;
                }
            }
            try
            {
                //循环处理数据------------------------------------------
                int recordCount = 0;
                for (int i = 0; i < listView.Items.Count; i++)
                {
                    szValues = "";
                    for (int j = 0; j < listView.Columns.Count; j++)
                    {
                        if (j >= listView.Items[i].SubItems.Count)
                        {
                            szValues += "'',";
                        }
                        else
                        {
                            szValues += "'" + listView.Items[i].SubItems[j].Text + "',";
                        }
                    }
                    szValues = szValues.TrimEnd(',');
                    //组合成SQL语句并执行
                    string szSql = "INSERT INTO [" + tableName + "](" + szFields + ") VALUES(" + szValues + ")";
                    command.CommandText = szSql;
                    recordCount        += command.ExecuteNonQuery();
                }
                connection.Close();
                return(recordCount);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }