0

我有一个datagridview,我想将它导出到excel。它工作得很好,但它在excel中有问题。我有一些列7/8 7/9在 sql 中命名为 .... 它显示为[7/8] [7/9].... 但是当我将其导出到 excel 时,这些列的名称将显示为月份名称,如:8-jul 9-jul但我不希望它们显示为.

我想在 sql 中显示完全一样的列名。

我该怎么办?

任何帮助将不胜感激

4

4 回答 4

1

如果您使用的是 Microsoft.Office.Interop.Excel,则可以将tonumberformat的属性设置Cell@(用于文本),它将保持适当的值,试试这个:

oSheet.Cells[rowCount, columnCount].numberformat = "@";
oSheet.Cells[rowCount, columnCount] = "7/9";

编辑根据评论,你应该像这样使用它:

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
{ 
       for (int j = 0; j < dataGridView1.Columns.Count; j++) 
       {
             if(j+1 == 5 && i!=1) //value of the cell where you put values like 7/8 and it's not the column name cell
                   worksheet.Cells[i + 2, j + 1].numberformat = "@";
             worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
       } 
}

EDIT2因为它是一个列名,你可以使用这个:

for (int j = 0; j < dataGridView1.Columns.Count; j++) 
{
    worksheet.Cells[1, j + 1].numberformat = "@"; 
    worksheet.Cells[1, j + 1].dataGridView1.Columns[i].Name
}

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
{ 
       for (int j = 0; j < dataGridView1.Columns.Count; j++) 
       {
             worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
       } 
}
于 2012-11-18T19:24:42.127 回答
0

使用 MS ReportViewer 生成 Excel 报告。或者使用 Aspose 库。或使用 Devexpress AspxGridView + AspxGridViewExporter

于 2012-11-18T18:59:25.327 回答
0

[7/8]这很简单,只需在like中使用一个空格[ 7/8]

于 2012-11-18T20:23:35.750 回答
0

请看这个项目:https ://exportdata.codeplex.com/ ,它可以通过datagridview将超过4000行的大数据表导​​出到excel,还可以设置excel数据属性,如格式、样式等。在里面,你可以设置excel数据格式为你需要的,你可以试试看。

于 2012-11-19T05:52:18.260 回答