Generate sql insert script from excel worksheet

后端 未结 13 1021
情深已故
情深已故 2020-11-28 18:05

I have a large excel worksheet that I want to add to my database.

Can I generate an SQL insert script from this excel worksheet?

13条回答
  •  Happy的楠姐
    2020-11-28 18:44

    You can use the below C# Method to generate the insert scripts using Excel sheet just you need import OfficeOpenXml Package from NuGet Package Manager before executing the method.

    public string GenerateSQLInsertScripts() {
    
            var outputQuery = new StringBuilder();
            var tableName = "Your Table Name";
            if (file != null)
            {
                var filePath = @"D:\FileName.xsls";
    
                using (OfficeOpenXml.ExcelPackage xlPackage = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath)))
                {
                    var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select the first sheet here
                    var totalRows = myWorksheet.Dimension.End.Row;
                    var totalColumns = myWorksheet.Dimension.End.Column;
    
                    var columns = new StringBuilder(); //this is your columns
    
                    var columnRows = myWorksheet.Cells[1, 1, 1, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
    
                    columns.Append("INSERT INTO["+ tableName +"] (");
                    foreach (var colrow in columnRows)
                    {
                        columns.Append("[");
                        columns.Append(colrow);
                        columns.Append("]");
                        columns.Append(",");
                    }
                    columns.Length--;
                    columns.Append(") VALUES (");
                    for (int rowNum = 2; rowNum <= totalRows; rowNum++) //selet starting row here
                    {
                        var dataRows = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
    
                        var finalQuery = new StringBuilder(); 
                        finalQuery.Append(columns);
    
                        foreach (var dataRow in dataRows)
                        {
                            finalQuery.Append("'");
                            finalQuery.Append(dataRow);
                            finalQuery.Append("'");
                            finalQuery.Append(",");
                        }
                        finalQuery.Length--;
    
                        finalQuery.Append(");");
    
                        outputQuery.Append(finalQuery);
    
                      }
    
                }
            }
    
    return outputQuery.ToString();}
    

提交回复
热议问题