首页 > 解决方案 > C# - 将 DataTable 作为左对齐(左对齐)列导出到 Excel

问题描述

我正在尝试导出一个充满数字和字母的数据表,前后有间距。我正在使用下面的代码导出-效果很好。但是,所有列都居中而不是左对齐。

如何调整下面的代码以左对齐 excel 工作表?

    internal static void Export2Excel(DataTable dataTable, string RevisedFileName)
    {
        object misValue = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Excel.Application _appExcel = null;
        Microsoft.Office.Interop.Excel.Workbook _excelWorkbook = null;
        Microsoft.Office.Interop.Excel.Worksheet _excelWorksheet = null;
        try
        {
            // excel app object
            _appExcel = new Microsoft.Office.Interop.Excel.Application();

            // excel workbook object added to app
            _excelWorkbook = _appExcel.Workbooks.Add(misValue);

            _excelWorksheet = _appExcel.ActiveWorkbook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;

            // Left align all cells - THIS DOES NOT WORK.
            _excelWorksheet.get_Range("A1", "A1").Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

            // column names row (range obj)
            Microsoft.Office.Interop.Excel.Range _columnsNameRange;
            _columnsNameRange = _excelWorksheet.get_Range("A1", misValue).get_Resize(1, dataTable.Columns.Count);

            // column names array to be assigned to _columnNameRange
            string[] _arrColumnNames = new string[dataTable.Columns.Count];

            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                // array of column names
                _arrColumnNames[i] = dataTable.Columns[i].ColumnName;
            }

            // assign array to column headers range, make 'em bold
            _columnsNameRange.set_Value(misValue, _arrColumnNames);
            _columnsNameRange.Font.Bold = true;

            // populate data content row by row
            for (int Idx = 0; Idx < dataTable.Rows.Count; Idx++)
            {
                _excelWorksheet.Range["A2"].Offset[Idx].Resize[1, dataTable.Columns.Count].Value =
                dataTable.Rows[Idx].ItemArray;
            }

            // Autofit all Columns in the range
            _columnsNameRange.Columns.EntireColumn.AutoFit();




            _excelWorkbook.SaveAs(@Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/" + RevisedFileName + " Revised.xlsx");

            _excelWorkbook.Close();

            System.Runtime.InteropServices.Marshal.ReleaseComObject(_appExcel);

        }
        catch { throw; }
        MessageBox.Show("Success! Revised file has been saved to Desktop!");
    }

标签: c#.net

解决方案


我猜这条线

 _excelWorksheet.get_Range("A1", "A1").Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; 

以。。结束

....xlHAlignCenter 

但应该结束类似

....xlHAlignLeft; 

推荐阅读