2015-11-09 61 views
0

我试图在将数据添加到数据表格时使用.ToString()导出Excel文件。 Excel文件单元格格式不是文本,而是格式为General。这是我的代码。如何在导出Excel文件时将单元格格式指定为“文本”

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(); 
    } 
} 

有什么方法可以改变单元格格式吗?

+0

在Excel UI中编辑单元格时,只需通过单引号(')字符开始值即可强制文本格式。当通过代码设置时,这也许有用吗? –

+0

@modal_dialog这对我很有用。 THK – Kenz

回答

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 & 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 = "@"; 
      } 
     } 
1

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

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