दिलचस्प पोस्ट
क्या विंडोज पर एक परमाणु फाइल का नाम बदलना (ओवरराइट के साथ) संभव है? डाटाबेस सर्वर से कनेक्ट नहीं किया जा सकता (mysql workbench) एक विशिष्ट समय पर ऐप प्रारंभ करें Jquery या JavaScript में $ चिन्ह का मतलब क्या है? संदर्भ-टू-ऑरेरे पैरामीटर के बारे में क्या उपयोगी है? 'अगर' की सूची कहीं भी स्विच करती है? जावास्क्रिप्ट फ़ंक्शन को कॉल करने में देरी कैसे करें? रूबी ऐप के लिए स्टैक आकार को कैसे बढ़ाएं रिकर्सिव ऐप प्राप्त हो रहा है: स्टैक लेवल बहुत गहरा (सिस्टमस्टैक्स एरर) AccessViolationException को कैसे नियंत्रित करें जावा में घोषणा और परिभाषा के बीच अंतर क्या है? जावा या वेनिला जावास्क्रिप्ट में डोम उत्परिवर्तन की घटना एएसपी.नेट में, <% = और <% # के बीच अंतर क्या है जावास्क्रिप्ट में नए जोड़े गए तत्व के लिए onclick घटना जोड़ें कैसे वर्तमान पंक्ति को jqgrid में जारी रखने के लिए एकल गुणा के साथ बिट्स को निकालना

कैसे Excel में DataTable निर्यात करने के लिए

मैं सी # में Excel में DataTable कैसे निर्यात कर सकता हूं? मैं विंडोज फॉर्म का उपयोग कर रहा हूँ DataTable एक DataGridView नियंत्रण के साथ जुड़ा हुआ है। मुझे एक्सेल में DataTable रिकॉर्ड को निर्यात करना होगा

Solutions Collecting From Web of "कैसे Excel में DataTable निर्यात करने के लिए"

मैं क्लॉज एक्सएमएल की सिफारिश करेगा –

आप डेटा-टेलेबल को एक एक्सेल वर्कशीट में कुछ बहुत ही पठनीय संहिता के साथ बदल सकते हैं:

 XLWorkbook wb = new XLWorkbook(); DataTable dt = GetDataTableOrWhatever(); wb.Worksheets.Add(dt,"WorksheetName"); 

डेवलपर उत्तरदायी और मददगार है परियोजना सक्रिय रूप से विकसित है, और दस्तावेज़ीकरण शानदार है।

सरल कोड का प्रयास करें, DataTable को सीएसवी के रूप में फ़ाइल एक्सेल करने के लिए:

 var lines = new List<string>(); string[] columnNames = dataTable.Columns.Cast<DataColumn>(). Select(column => column.ColumnName). ToArray(); var header = string.Join(",", columnNames); lines.Add(header); var valueLines = dataTable.AsEnumerable() .Select(row => string.Join(",", row.ItemArray)); lines.AddRange(valueLines); File.WriteAllLines("excel.csv",lines); 

यह एक नई फ़ाइल excel.csv को "वर्तमान कार्यशील निर्देशिका" में लिख देगा जो आमतौर पर या तो जहां। Exe है या जहां से आप उसे लॉन्च करते हैं

ध्यान दें कि आउटपुट डेटाटाले में पहले से मौजूद डेटा के बीच अल्पविराम ( "," ) डालता है चूंकि यह डेटा में अल्पविराम से बच नहीं पाता है, इसलिए डेटा में अल्पविराम फाइल को पढ़ने के कार्यक्रम द्वारा गलत तरीके से व्याख्या किया जाएगा।

एक सुरुचिपूर्ण विकल्प .net ढांचे के DataTable वर्ग के लिए एक्सटेंशन विधि (नीचे देखें) लिख रहा है।

इस extention विधि को निम्नानुसार कहा जा सकता है:

 using System; using System.Collections.Generic; using System.Linq; using Excel = Microsoft.Office.Interop.Excel; using System.Data; using System.Data.OleDb; DataTable dt; // fill table data in dt here ... // export DataTable to excel // save excel file without ever making it visible if filepath is given // don't save excel file, just make it visible if no filepath is given dt.ExportToExcel(ExcelFilePath); 

डेटाटालेबल के लिए एक्सटेंशन विधि:

 public static class My_DataTable_Extensions { // Export DataTable into an excel file with field names in the header line // - Save excel file without ever making it visible if filepath is given // - Don't save excel file, just make it visible if no filepath is given public static void ExportToExcel(this DataTable tbl, string excelFilePath = null) { try { if (tbl == null || tbl.Columns.Count == 0) throw new Exception("ExportToExcel: Null or empty input table!\n"); // load excel, and create a new workbook var excelApp = new Excel.Application(); excelApp.Workbooks.Add(); // single worksheet Excel._Worksheet workSheet = excelApp.ActiveSheet; // column headings for (var i = 0; i < tbl.Columns.Count; i++) { workSheet.Cells[1, i + 1] = tbl.Columns[i].ColumnName; } // rows for (var i = 0; i < tbl.Rows.Count; i++) { // to do: format datetime values before printing for (var j = 0; j < tbl.Columns.Count; j++) { workSheet.Cells[i + 2, j + 1] = tbl.Rows[i][j]; } } // check file path if (!string.IsNullOrEmpty(excelFilePath)) { try { workSheet.SaveAs(excelFilePath); excelApp.Quit(); MessageBox.Show("Excel file saved!"); } catch (Exception ex) { throw new Exception("ExportToExcel: Excel file could not be saved! Check filepath.\n" + ex.Message); } } else { // no file path is given excelApp.Visible = true; } } catch (Exception ex) { throw new Exception("ExportToExcel: \n" + ex.Message); } } } 

टुनकेलिक (विचार के लिए धन्यवाद) आलेख पर आधारित समाधान, लेकिन बड़ी तालिकाओं के मामले में बहुत तेजी से काम कर रहा है (और थोड़ा कम स्पष्ट है)।

 public static class My_DataTable_Extensions { /// <summary> /// Export DataTable to Excel file /// </summary> /// <param name="DataTable">Source DataTable</param> /// <param name="ExcelFilePath">Path to result file name</param> public static void ExportToExcel(this System.Data.DataTable DataTable, string ExcelFilePath = null) { try { int ColumnsCount; if (DataTable == null || (ColumnsCount = DataTable.Columns.Count) == 0) throw new Exception("ExportToExcel: Null or empty input table!\n"); // load excel, and create a new workbook Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); Excel.Workbooks.Add(); // single worksheet Microsoft.Office.Interop.Excel._Worksheet Worksheet = Excel.ActiveSheet; object[] Header = new object[ColumnsCount]; // column headings for (int i = 0; i < ColumnsCount; i++) Header[i] = DataTable.Columns[i].ColumnName; Microsoft.Office.Interop.Excel.Range HeaderRange = Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, ColumnsCount])); HeaderRange.Value = Header; HeaderRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray); HeaderRange.Font.Bold = true; // DataCells int RowsCount = DataTable.Rows.Count; object[,] Cells = new object[RowsCount, ColumnsCount]; for (int j = 0; j < RowsCount; j++) for (int i = 0; i < ColumnsCount; i++) Cells[j, i] = DataTable.Rows[j][i]; Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[2, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[RowsCount + 1, ColumnsCount])).Value = Cells; // check fielpath if (ExcelFilePath != null && ExcelFilePath != "") { try { Worksheet.SaveAs(ExcelFilePath); Excel.Quit(); System.Windows.MessageBox.Show("Excel file saved!"); } catch (Exception ex) { throw new Exception("ExportToExcel: Excel file could not be saved! Check filepath.\n" + ex.Message); } } else // no filepath is given { Excel.Visible = true; } } catch (Exception ex) { throw new Exception("ExportToExcel: \n" + ex.Message); } } } 

इस फ़ंक्शन को डेटाैट और फ़ाइल पथ को पारित करने का प्रयास करें जहां आप निर्यात करना चाहते हैं

 public void CreateCSVFile(ref DataTable dt, string strFilePath) { try { // Create the CSV file to which grid data will be exported. StreamWriter sw = new StreamWriter(strFilePath, false); // First we will write the headers. //DataTable dt = m_dsProducts.Tables[0]; int iColCount = dt.Columns.Count; for (int i = 0; i < iColCount; i++) { sw.Write(dt.Columns[i]); if (i < iColCount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); // Now write all the rows. foreach (DataRow dr in dt.Rows) { for (int i = 0; i < iColCount; i++) { if (!Convert.IsDBNull(dr[i])) { sw.Write(dr[i].ToString()); } if (i < iColCount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); } sw.Close(); } catch (Exception ex) { throw ex; } } 

सबसे अच्छा और आसान तरीका

 private void exportToExcel(DataTable dt) { /*Set up work book, work sheets, and excel application*/ Microsoft.Office.Interop.Excel.Application oexcel = new Microsoft.Office.Interop.Excel.Application(); try { string path = AppDomain.CurrentDomain.BaseDirectory; object misValue = System.Reflection.Missing.Value; Microsoft.Office.Interop.Excel.Workbook obook = oexcel.Workbooks.Add(misValue); Microsoft.Office.Interop.Excel.Worksheet osheet = new Microsoft.Office.Interop.Excel.Worksheet(); // obook.Worksheets.Add(misValue); osheet = (Microsoft.Office.Interop.Excel.Worksheet)obook.Sheets["Sheet1"]; int colIndex = 0; int rowIndex = 1; foreach (DataColumn dc in dt.Columns) { colIndex++; osheet.Cells[1, colIndex] = dc.ColumnName; } foreach (DataRow dr in dt.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn dc in dt.Columns) { colIndex++; osheet.Cells[rowIndex, colIndex] = dr[dc.ColumnName]; } } osheet.Columns.AutoFit(); string filepath = "C:\\Temp\\Book1"; //Release and terminate excel obook.SaveAs(filepath); obook.Close(); oexcel.Quit(); releaseObject(osheet); releaseObject(obook); releaseObject(oexcel); GC.Collect(); } catch (Exception ex) { oexcel.Quit(); log.AddToErrorLog(ex, this.Name); } } 

आप EasyXLS का उपयोग कर सकते हैं जो Excel फ़ाइलों को निर्यात करने के लिए एक लाइब्रेरी है।

इस कोड की जांच करें:

 DataSet ds = new DataSet(); ds.Tables.Add(dataTable); ExcelDocument xls = new ExcelDocument(); xls.easy_WriteXLSFile_FromDataSet("datatable.xls", ds, new ExcelAutoFormat(Styles.AUTOFORMAT_EASYXLS1), "DataTable"); 

सी # में उत्कृष्टता के लिए डेटालेट को निर्यात करने के तरीके के बारे में यह नमूना भी देखें।

नोट: यदि आप किसी डेटा तालिका से मूल्य ऑब्जेक्ट में Excel को तो पारित करने का प्रयास कर रहे हैं, तो आपको डेटैटइप त्रुटि हैंडलिंग भी करना चाहिए। उदाहरण के लिए, ग्रिड्स आपके असाइनमेंट को एक HRESULT: 0x800A03EC अपवाद के साथ मार देगा। डेटाटाइप के लिए बिना परीक्षण के आसपास एक काम "ToString ()" का प्रयोग करते हैं, जब आपके ऑब्जेक्ट को लोकप्रिय बनाते हैं। एक्सेल नंबरों को नंबर पर अपने आप बदल देगा। FlashTrev के रूप में तिथि / समय के संबंधित मुद्दे को संबोधित किया।

ट्यूनस्किक के जवाब के बारे में, जो महान है, विशेषकर यदि आप कोड के साथ थोड़ा खेलना चाहते हैं, लेकिन यह मेरी तिथियां अमेरिकी स्वरूप में डाल रही है यानी यूके में 2 मार्च 2014 को 02/03/2014 है लेकिन संयुक्त राज्य अमेरिका में 03/02/2014 के साथ महीने 1, उसके बाद सप्ताह के दिन। मुझे यह यूके प्रारूप में होना चाहिए, कोई विचार कृपया?

मैंने यह जाँच लिया है कि यह मेरे डेटाटाले में यूके प्रारूप में जमा है और मेरा एक्सेल भी ब्रिटेन में है, परन्तु किसी कारण के लिए जब यह एक्सेल दस्तावेज़ बना लेता है, तो उसे अपना अमरीका माना जाता है (यह इसलिए है क्योंकि माइक्रोसॉफ्ट एक संयुक्त राज्य अमेरिका कंपनी है)

मैं संस्कृति के कोड के साथ प्रयोग करने की कोशिश करता हूं, लेकिन यह सुनिश्चित नहीं है कि अभी तक उसे कहां रखा जाए कोशिश की लेकिन इसका कोई प्रभाव नहीं पड़ा।

ps

मुझे नीचे एक 'कास्ट' जोड़कर काम करने के लिए एक पंक्ति को बदलना होगा

 // single worksheet Excel._Worksheet workSheet = (Excel._Worksheet)excelApp.ActiveSheet; 

अपडेट: मैंने लॉन्गडेट टाइम फ़ॉर्मेट में परिवर्तित करके युग के स्वरूपण को हासिल किया है, हालांकि इसके आसपास केवल एक काम है।

 DateTime startDate = Convert.ToDateTime(myList[0].ToString()); string strStartDate = startDate.ToLongDateString(); DateTime endDate = Convert.ToDateTime(myList[myListTotalRows].ToString()); string strEndDate = endDate.ToLongDateString(); 

खुश होती है।

एक्सेल इंटरओप:

यह विधि dd-mm-yyyy से mm-dd-yyyy तक फ़्लिप किए जाने की तिथि को रोकती है

 public bool DataTableToExcelFile(DataTable dt, string targetFile) { const bool dontSave = false; bool success = true; //Exit if there is no rows to export if (dt.Rows.Count == 0) return false; object misValue = System.Reflection.Missing.Value; List<int> dateColIndex = new List<int>(); Excel.Application excelApp = new Excel.Application(); Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(misValue); Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets("sheet1"); //Iterate through the DataTable and populate the Excel work sheet try { for (int i = -1; i <= dt.Rows.Count - 1; i++) { for (int j = 0; j <= dt.Columns.Count - 1; j++) { if (i < 0) { //Take special care with Date columns if (dt.Columns(j).DataType is typeof(DateTime)) { excelWorkSheet.Cells(1, j + 1).EntireColumn.NumberFormat = "d-MMM-yyyy;@"; dateColIndex.Add(j); } //else if ... Feel free to add more Formats else { //Otherwise Format the column as text excelWorkSheet.Cells(1, j + 1).EntireColumn.NumberFormat = "@"; } excelWorkSheet.Cells(1, j + 1) = dt.Columns(j).Caption; } else if (dateColIndex.IndexOf(j) > -1) { excelWorkSheet.Cells(i + 2, j + 1) = Convert.ToDateTime(dt.Rows(i).ItemArray(j)).ToString("d-MMM-yyyy"); } else { excelWorkSheet.Cells(i + 2, j + 1) = dt.Rows(i).ItemArray(j).ToString(); } } } //Add Autofilters to the Excel work sheet excelWorkSheet.Cells.AutoFilter(1, Type.Missing, Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true); //Autofit columns for neatness excelWorkSheet.Columns.AutoFit(); if (File.Exists(exportFile)) File.Delete(exportFile); excelWorkSheet.SaveAs(exportFile); } catch { success = false; } finally { //Do this irrespective of whether there was an exception or not. excelWorkBook.Close(dontSave); excelApp.Quit(); releaseObject(excelWorkSheet); releaseObject(excelWorkBook); releaseObject(excelApp); } return success; } 

यदि आप दिनांक को फ्लिप करने की परवाह नहीं करते हैं, तो देखें लिंक का उपयोग करें जो दिखाता है कि Excel स्प्रैडशीट में सभी कक्षों को एक पंक्ति के कोड में कैसे पॉप्युलेट करना है:

एक्सेल इंटरऑप – दक्षता और प्रदर्शन

सीएसवी:

 public string DataTableToCSV(DataTable dt, bool includeHeader, string rowFilter, string sortFilter, bool useCommaDelimiter = false, bool truncateTimesFromDates = false) { dt.DefaultView.RowFilter = rowFilter; dt.DefaultView.Sort = sortFilter; DataView dv = dt.DefaultView; string csv = DataTableToCSV(dv.ToTable, includeHeader, useCommaDelimiter, truncateTimesFromDates); //reset the Filtering dt.DefaultView.RowFilter = string.Empty; return csv; } public string DataTableToCsv(DataTable dt, bool includeHeader, bool useCommaDelimiter = false, bool truncateTimesFromDates = false) { StringBuilder sb = new StringBuilder(); string delimter = Constants.vbTab; if (useCommaDelimiter) delimter = ","; if (includeHeader) { foreach (DataColumn dc in dt.Columns) { sb.AppendFormat("{0}" + Constants.vbTab, dc.ColumnName); } //remove the last Tab sb.Remove(sb.ToString.Length - 1, 1); sb.Append(Environment.NewLine); } foreach (DataRow dr in dt.Rows) { foreach (DataColumn dc in dt.Columns) { if (Information.IsDate(dr(dc.ColumnName).ToString()) & dr(dc.ColumnName).ToString().Contains(".") == false & truncateTimesFromDates) { sb.AppendFormat("{0}" + delimter, Convert.ToDateTime(dr(dc.ColumnName).ToString()).Date.ToShortDateString()); } else { sb.AppendFormat("{0}" + delimter, CheckDBNull(dr(dc.ColumnName).ToString().Replace(",", ""))); } } //remove the last Tab sb.Remove(sb.ToString.Length - 1, 1); sb.Append(Environment.NewLine); } return sb.ToString; } public enum enumObjectType { StrType = 0, IntType = 1, DblType = 2 } public object CheckDBNull(object obj, enumObjectType ObjectType = enumObjectType.StrType) { object objReturn = null; objReturn = obj; if (ObjectType == enumObjectType.StrType & Information.IsDBNull(obj)) { objReturn = ""; } else if (ObjectType == enumObjectType.IntType & Information.IsDBNull(obj)) { objReturn = 0; } else if (ObjectType == enumObjectType.DblType & Information.IsDBNull(obj)) { objReturn = 0.0; } return objReturn; } 

पुरानी धागा – लेकिन सोचा कि मैं यहाँ अपना कोड फेंक दूँगा। मैंने एक डेटा तालिका को एक विशिष्ट पथ (स्थान) पर एक नई एक्सेल शीट में लिखने के लिए एक छोटे से फ़ंक्शन लिखा था इसके अलावा आपको Microsoft Excel 14.0 पुस्तकालय के लिए एक संदर्भ जोड़ने की आवश्यकता होगी।

मैं इस धागे से एक्सेल करने के लिए कुछ लिखने पर खींच लिया – एक्सेल फ़ाइल (.xlsx) के लिए कुछ डेटा कैसे लिखूं

मैं उस डेटा को लिखने के लिए एक्सट्रपोल करने के लिए प्रयोग किया

* पकड़ बयान में नोट मुझे एक त्रुटिहैदिलर स्थिर वर्ग संदर्भ है (आप उन पर ध्यान न दें)

  using excel = Microsoft.Office.Interop.Excel; using System.IO; using System.Data; using System.Runtime.InteropServices; //class and namespace wrapper is not shown in this example private void WriteToExcel(System.Data.DataTable dt, string location) { //instantiate excel objects (application, workbook, worksheets) excel.Application XlObj = new excel.Application(); XlObj.Visible = false; excel._Workbook WbObj = (excel.Workbook)(XlObj.Workbooks.Add("")); excel._Worksheet WsObj = (excel.Worksheet)WbObj.ActiveSheet; //run through datatable and assign cells to values of datatable try { int row = 1; int col = 1; foreach (DataColumn column in dt.Columns) { //adding columns WsObj.Cells[row, col] = column.ColumnName; col++; } //reset column and row variables col = 1; row++; for (int i = 0; i < dt.Rows.Count; i++) { //adding data foreach (var cell in dt.Rows[i].ItemArray) { WsObj.Cells[row, col] = cell; col++; } col = 1; row++; } WbObj.SaveAs(location); } catch (COMException x) { ErrorHandler.Handle(x); } catch (Exception ex) { ErrorHandler.Handle(ex); } finally { WbObj.Close(); } } 

ऐसा करने का एक तरीका एसीई ओएलईडीबी प्रदाता के साथ भी होगा ( एक्सेल के लिए कनेक्शन स्ट्रिंग भी देखें)। बेशक आपको प्रदाता स्थापित और पंजीकृत होना होगा आपके पास यह होना चाहिए, अगर आपके पास एक्सेल स्थापित है, लेकिन ऐप को परिनियोजित करते समय आपको इस पर विचार करना चाहिए।

ExportHelper से सहायक विधि को कॉल करने का यह उदाहरण है: ExportHelper.CreateXlsFromDataTable(myDataTable, @"C:\tmp\export.xls");

एसीई ओएलईडीबी का उपयोग कर एक्सेल फाइल को निर्यात करने के लिए सहायक:

 public class ExportHelper { private const string ExcelOleDbConnectionStringTemplate = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\";"; /// <summary> /// Creates the Excel file from items in DataTable and writes them to specified output file. /// </summary> public static void CreateXlsFromDataTable(DataTable dataTable, string fullFilePath) { string createTableWithHeaderScript = GenerateCreateTableCommand(dataTable); using (var conn = new OleDbConnection(String.Format(ExcelOleDbConnectionStringTemplate, fullFilePath))) { if (conn.State != ConnectionState.Open) { conn.Open(); } OleDbCommand cmd = new OleDbCommand(createTableWithHeaderScript, conn); cmd.ExecuteNonQuery(); foreach (DataRow dataExportRow in dataTable.Rows) { AddNewRow(conn, dataExportRow); } } } private static void AddNewRow(OleDbConnection conn, DataRow dataRow) { string insertCmd = GenerateInsertRowCommand(dataRow); using (OleDbCommand cmd = new OleDbCommand(insertCmd, conn)) { AddParametersWithValue(cmd, dataRow); cmd.ExecuteNonQuery(); } } /// <summary> /// Generates the insert row command. /// </summary> private static string GenerateInsertRowCommand(DataRow dataRow) { var stringBuilder = new StringBuilder(); var columns = dataRow.Table.Columns.Cast<DataColumn>().ToList(); var columnNamesCommaSeparated = string.Join(",", columns.Select(x => x.Caption)); var questionmarkCommaSeparated = string.Join(",", columns.Select(x => "?")); stringBuilder.AppendFormat("INSERT INTO [{0}] (", dataRow.Table.TableName); stringBuilder.Append(columnNamesCommaSeparated); stringBuilder.Append(") VALUES("); stringBuilder.Append(questionmarkCommaSeparated); stringBuilder.Append(")"); return stringBuilder.ToString(); } /// <summary> /// Adds the parameters with value. /// </summary> private static void AddParametersWithValue(OleDbCommand cmd, DataRow dataRow) { var paramNumber = 1; for (int i = 0; i <= dataRow.Table.Columns.Count - 1; i++) { if (!ReferenceEquals(dataRow.Table.Columns[i].DataType, typeof(int)) && !ReferenceEquals(dataRow.Table.Columns[i].DataType, typeof(decimal))) { cmd.Parameters.AddWithValue("@p" + paramNumber, dataRow[i].ToString().Replace("'", "''")); } else { object value = GetParameterValue(dataRow[i]); OleDbParameter parameter = cmd.Parameters.AddWithValue("@p" + paramNumber, value); if (value is decimal) { parameter.OleDbType = OleDbType.Currency; } } paramNumber = paramNumber + 1; } } /// <summary> /// Gets the formatted value for the OleDbParameter. /// </summary> private static object GetParameterValue(object value) { if (value is string) { return value.ToString().Replace("'", "''"); } return value; } private static string GenerateCreateTableCommand(DataTable tableDefination) { StringBuilder stringBuilder = new StringBuilder(); bool firstcol = true; stringBuilder.AppendFormat("CREATE TABLE [{0}] (", tableDefination.TableName); foreach (DataColumn tableColumn in tableDefination.Columns) { if (!firstcol) { stringBuilder.Append(", "); } firstcol = false; string columnDataType = "CHAR(255)"; switch (tableColumn.DataType.Name) { case "String": columnDataType = "CHAR(255)"; break; case "Int32": columnDataType = "INTEGER"; break; case "Decimal": // Use currency instead of decimal because of bug described at // http://social.msdn.microsoft.com/Forums/vstudio/en-US/5d6248a5-ef00-4f46-be9d-853207656bcc/localization-trouble-with-oledbparameter-and-decimal?forum=csharpgeneral columnDataType = "CURRENCY"; break; } stringBuilder.AppendFormat("{0} {1}", tableColumn.ColumnName, columnDataType); } stringBuilder.Append(")"); return stringBuilder.ToString(); } } 

निम्न वर्ग का उपयोग करें

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using excel = Microsoft.Office.Interop.Excel; using EL = ExcelLibrary.SpreadSheet; using System.Drawing; using System.Collections; using System.Runtime.InteropServices; using System.Windows.Forms; namespace _basic { public class ExcelProcesser { public void WriteToExcel(System.Data.DataTable dt) { excel.Application XlObj = new excel.Application(); XlObj.Visible = false; excel._Workbook WbObj = (excel.Workbook)(XlObj.Workbooks.Add("")); excel._Worksheet WsObj = (excel.Worksheet)WbObj.ActiveSheet; object misValue = System.Reflection.Missing.Value; try { int row = 1; int col = 1; foreach (DataColumn column in dt.Columns) { //adding columns WsObj.Cells[row, col] = column.ColumnName; col++; } //reset column and row variables col = 1; row++; for (int i = 0; i < dt.Rows.Count; i++) { //adding data foreach (var cell in dt.Rows[i].ItemArray) { WsObj.Cells[row, col] = cell; col++; } col = 1; row++; } WbObj.SaveAs(fileFullName, excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { WbObj.Close(true, misValue, misValue); } } } 

}