导出Excel文件时如何将单元格格式指定为“文本”

时间:2015-11-09 05:11:26

标签: c# excel excel-interop

当我向数据表添加数据时,我正在尝试使用.ToString()导出Excel文件。 Excel文件单元格格式不是文本格式,而是General格式。这是我的代码。

public static void CreateExcel(string filename,System.Data.DataTable table)
{
    if (filename != "")
    {
        Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        xlApp.DisplayAlerts = false;

        if (xlApp == null)
        {
            return;
        }

        Workbook xlWorkBook;
        Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        xlWorkBook = xlApp.Workbooks.Add(misValue);
        xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);

        int Row = table.Rows.Count;
        int Column = table.Columns.Count;

        for (int i = 0; i <= Column - 1; i++)
        {
            xlWorkSheet.Cells[1, i + 1] = table.Columns[i].ToString();
        }

        for (int i = 0; i <= Row - 1; i++)
        {
            for (int j = 0; j <= Column - 1; j++)
            {
                xlWorkSheet.Cells[i + 2, j + 1] = table.Rows[i][j].ToString();
            }
        }

        xlWorkBook.SaveAs(@filename, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, System.Reflection.Missing.Value, misValue, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, misValue, misValue, misValue);

        xlWorkBook.Close();
        xlApp.Quit();
        Marshal.FinalReleaseComObject(xlWorkSheet);
        Marshal.FinalReleaseComObject(xlWorkBook);
        Marshal.FinalReleaseComObject(xlApp);

        GC.Collect();
    }
}

有没有办法改变单元格格式?

2 个答案:

答案 0 :(得分:1)

设置单元格的数字格式将帮助您将单元格类型转换为文本。

Excel.Worksheet ws = workBook.Worksheets[1];
ws.Range["A2"].NumberFormat = "0";

答案 1 :(得分:0)

    // Pull in all the cells of the worksheet
    Range cells = xlWorkBook.Worksheets[1].Cells;
    // set each cell's format to Text
    cells.NumberFormat = "@";

这里有2个链接可以帮助您解决所有问题。 Link 1&amp; Link 2

在您的情况下:

for (int i = 0; i <= Row - 1; i++)
        {
            for (int j = 0; j <= Column - 1; j++)
            {
                xlWorkSheet.Cells[i + 2, j + 1] = table.Rows[i][j].ToString();
               //It will set each cell while iterates, 
               //I suggest, if its for all column, then set it for the excel sheet. 
               //or if you have a known range, then set for the range. 
                xlWorkSheet.Cells[i + 2, j + 1].NumberFormat = "@";
            }
        }