Winform导入Excel数据到数据库

 public partial class ImportExcel : Form
    {
        AceessHelpers accessHelper = new AceessHelpers();
        public ImportExcel()
        {
            InitializeComponent();
        }

        private void btn_importExcelData(object sender, EventArgs e)
        {
            openFileDialog1.Title = "打开文件";
            openFileDialog1.ShowHelp = true;
            openFileDialog1.RestoreDirectory = true;

            //openFileDialog1.Filter = "Excel文件(*.xlsx)|(*.xls)";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.txt_path.Text = openFileDialog1.FileName;
            }
        }

        private void btn_upload_Click(object sender, EventArgs e)
        {
            string path = openFileDialog1.FileName;

            System.Data.DataTable dt = GetDataTable(path);
            int result = 0;
            for (int i = 1; i < dt.Rows.Count; i++)
            {
                string sql = "insert into Products (ProductName,Area,ProductCategory,Customer,Style,StructureStyle,Width,Square,Other) values (‘" +
                Convert.ToString(dt.Rows[i]["F1"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F2"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F3"]) + "‘,‘" +
                Convert.ToString(dt.Rows[i]["F4"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F5"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F6"]) + "‘,‘" +
                Convert.ToString(dt.Rows[i]["F7"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F8"]) + "‘,‘" + Convert.ToString(dt.Rows[i]["F9"]) + "‘)";

                int j = accessHelper.ReturnSql(sql);
                result = j++;
            }
            if (result > 0)
            {
                this.Close();
            }
        }

        /// <summary>
        /// 读取excel指定页中的内容
        /// </summary>
        /// <param name="strExcelFileName">excel路径</param>
        /// <returns></returns>
        protected System.Data.DataTable GetDataTable(string strExcelFileName)
        {
            //DataSet myDs = new DataSet();
            System.Data.DataTable dt = new System.Data.DataTable();
            DataRow myRow;
            object oMissing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.Application(); ;
            Microsoft.Office.Interop.Excel.Workbooks workbooks;
            //Microsoft.Office.Interop.Excel.Worksheet worksheet;
            Microsoft.Office.Interop.Excel.Workbook workbook;
            workbooks =  application.Workbooks;
            workbook = returnworkbook(strExcelFileName, workbooks);
            //worksheet = (Worksheet)workbook.Sheets[1];

            for (int sheetint = 1; sheetint < 2; sheetint++)// DateTime.Now.Day Convert.ToDateTime(TextBox4.Text.Trim()).Day;// myBook.Worksheets.Count;//能得到sheet的数量
            {
                Worksheet mySheet = (Worksheet)workbook.Worksheets[sheetint];
                int rowsint = mySheet.UsedRange.Cells.Rows.Count; //得到行数
                int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数
                if (sheetint == 1)
                {
                    for (int i = 1; i <= columnsint; i++)
                    {
                        dt.Columns.Add("F" + i.ToString(), System.Type.GetType("System.String"));
                    }
                }
                for (int i = 2; i <= rowsint; i++) //第一行为标题,不读取
                {
                    myRow = dt.NewRow();
                    for (int j = 1; j <= columnsint; j++)
                    {

                        Range r = (Range)mySheet.Cells[i, j];
                        string strValue = r.Text.ToString();

                        string columnname = "F" + j.ToString();
                        myRow[columnname] = (strValue.Length == 0 || strValue.Contains("#")) ? " " : strValue;
                    }
                    try
                    {
                        dt.Rows.Add(myRow);
                    }
                    catch { }
                }
            }
            workbook.Close(oMissing, oMissing, oMissing);
            workbooks.Close();
            application.Quit();

            return dt;
        }

        private Workbook returnworkbook(string filename, Workbooks works)  //这里是打一开一个工作表
        {
            Microsoft.Office.Interop.Excel.Workbook wk = works.Open(
             filename, Type.Missing, Type.Missing,
                     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                     Type.Missing, Type.Missing);
            return wk;
        }

    }
时间: 2024-10-25 05:12:24

Winform导入Excel数据到数据库的相关文章

导入Excel数据至数据库——思路整理

说明 背景: 导入Excel数据到数据库成为目前项目中很常用的技术,整理以前的实现发现:在原来系统中的导入,没有实现方法复用,如果要实现某一处数据的导入,需要将原来的代码复制过去.修修改改,实现过程较为复杂,实现类似的功能需要对原来的代码重新梳理,结合业务修改代码. 为了让每次相同的功能都不需要重复的开发,我们需要实现一种能够得到复用的程序功能. 目的: 如图所示 我们需要将Excel中的数据记录插入到DB的表中,如何实现? 转换 将Excel转换为List 将Excel转换为DataTable

导入excel数据到数据库

1.上传excel到服务器 jsp页面代码 <form action="actionname" method="post" id="form1" enctype="multipart/form-data"> <input type="file" name="excel" id="fileExecl" class="inputFile&quo

如何批量导入excel数据至数据库(MySql)--工具phpMyAdmin

之前由于数据储存使用excel保存了所有数据,经过初步数据筛选,数据量近4000条.一条一条录入数据库显然是不可行的.以下是我所操作的步骤: 1.只保留excel的数据部分,去除第一行的具体说明 2.文件另存为(.csv)格式 保存即可 3.把刚才存成csv格式的文件用TXT打开再次另存为 注意! 编码改成 UTF-8 这步必须要有,否则导入后极有可能出现乱码. 4.在phpmyadmin中按照数据顺序创建表,新建字段,字段名与你要导入的excel表字段关联且顺序相同. 5.点击"导入"

windows命令行下导入excel数据到SQLite数据库

1.转换文件格式,防止中文乱码:将excel保存成"CSV(逗号分隔)(*.csv)"格式,关闭文件,用记事本打开刚才保存的.csv文件,然后另存为UTF-8格式文本.需要注意的是,经过这样的转换,数字也全变成文本了. 2.通过adb shell(adb.exe存放在android开发软件安装文件夹中,如 F:\Develope\Tools\adt-bundle-windows-x86\sdk\platform-tools\)更改sqlite数据库的使用权限.运行adb之前要先打开AV

[zz]winform导入excel

winfrom导入excel内容,要求能够excel中多个工作簿的内容.代码如下: #region 导入excel数据 private void button2_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "表格文件 (*.xls)|*.xls"; openFileDialog.RestoreDirect

SQL Server服务器上需要导入Excel数据的必要条件

SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Excel了.

上传excel数据到数据库中

上传excel表格数据到数据库 导入固定路径下的excel数据到数据库 <form id="disposeFlightDataForm" action="../upload/disposeFlightData" method="post"> <input id="disposeFlightDataButton" type="submit" value="处理航班数据"

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册&quot;Microsoft.Jet.OLEDB.4.0&quot; 提供程序&quot;

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序" 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采

(转)PLSQL Developer导入Excel数据

场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有完成最终统计的目的,只是将Excel中的数据导入到了数据库中了,所以未完待续! 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Excel文件由“.xls”格式转换为“.csv”格式,再手工根据Exce