zoukankan      html  css  js  c++  java
  • DataTable保存为Excel或者Txt

    保存为txt的时候,可保持原来的行列对齐,如下:

    using
    System; using System.Collections.Generic; using System.Text; using System.Data; using System.IO; using System.Windows.Forms; using System.Reflection; namespace celiang { public class saveDataTableToExcelTxt { public saveDataTableToExcelTxt(DataTable table,string fullName) { string extention = Path.GetExtension(fullName); if(extention==".txt")//如果保存为txt文件 { if(ExportToTxt(table,fullName)==true) { MessageBox.Show("保存成功","提示"); } } else if(extention==".xls") { if (ExportToExcel(table, fullName)) { MessageBox.Show("保存成功","提示"); } } } /// <保存DataTable 到Excel> /// /// </summary> /// <param name="table"></param> /// <param name="excelName"></param> /// <returns></returns> private bool ExportToExcel(System.Data.DataTable table, string excelName) { Microsoft.Office.Interop.Excel.Application oXL; Microsoft.Office.Interop.Excel.Workbook oWB; Microsoft.Office.Interop.Excel.Worksheet oSheet; Microsoft.Office.Interop.Excel.Range oRange; // Start Excel and get Application object. oXL = new Microsoft.Office.Interop.Excel.Application(); // Set some properties oXL.Visible = false; oXL.DisplayAlerts = false; // Get a new workbook. oWB = oXL.Workbooks.Add(Missing.Value); // Get the active sheet oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet; oSheet.Name = "Customers"; // Process the DataTable // BE SURE TO CHANGE THIS LINE TO USE *YOUR* DATATABLE System.Data.DataTable dt = table; int rowCount = 1; foreach (DataRow dr in dt.Rows) { rowCount += 1; for (int i = 1; i < dt.Columns.Count + 1; i++) { // Add the header the first time through if (rowCount == 2) { oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName; } oSheet.Cells[rowCount, i] = dr[i - 1].ToString(); } } // Resize the columns oRange = oSheet.get_Range(oSheet.Cells[1, 1], oSheet.Cells[rowCount, dt.Columns.Count]); oRange.EntireColumn.AutoFit(); // Save the sheet and close oSheet = null; oRange = null; oWB.SaveAs(excelName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); oWB.Close(Missing.Value, Missing.Value, Missing.Value); oWB = null; oXL.Quit(); // Clean up // NOTE: When in release mode, this does the trick GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); return true; } private bool ExportToTxt(System.Data.DataTable table ,string fullName) { int[] iColumnLength = new int[table.Columns.Count]; FileStream fileStream = new FileStream(fullName, FileMode.Create); StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.Unicode); StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < table.Columns.Count; i++) { int iLength = 0; for (int j = 0; j < table.Rows.Count; j++) { if (iLength < (table.Rows[j][i].ToString()).Length) { iLength = (table.Rows[j][i].ToString()).Length; } } iColumnLength[i] = iLength; } for (int i = 0; i < table.Rows.Count - 1; i++) { for (int j = 0; j < table.Columns.Count; j++) { string str1 = table.Rows[i][j].ToString(); int iLength = str1.Length; int iColumnWidth = iColumnLength[j] + 4; for (int k = iLength; k < iColumnWidth; k++) { str1 += " "; } if (j == table.Columns.Count - 1) { strBuilder.AppendLine(str1); } else { strBuilder.Append(str1); } } } streamWriter.WriteLine(strBuilder.ToString()); streamWriter.Close(); fileStream.Close(); return true; } } }
  • 相关阅读:
    html 上传图片前预览
    php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
    php 计算 pdf文件页数
    php 获取半年内每个月的订单数量, 总价, 月份
    php 获取两个数组之间不同的值
    小程序支付功能
    关于nginx的Job for nginx.service failed because the control process exited with error code.错误
    linux 安装 Apollo
    MongoDB待续。。。
    ABP vNext...待续
  • 原文地址:https://www.cnblogs.com/ilookbo/p/4367724.html
Copyright © 2011-2022 走看看