在我的应用程序中,我正在将DataGridView数据导出到Excel工作表,现在我想将组合框和文本框的选定值传递到Excel工作表,我必须将Excel工作表的标题给予为Windows应用程序的报告,我该怎么做呢?
有人能帮我吗?
我有导出datagridview数据到excel的代码:
private void btnexcel_Click(object sender, EventArgs e)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
int i = 0;
int j = 0;
for (i = 0; i <= dataGridView1.RowCount - 1; i++)
{
for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
DataGridViewCell cell = dataGridView1[j, i];
xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
}
}
xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
}
}
2条答案
按热度按时间vu8f3i0k1#
在获取
DataGridView
单元格信息的代码中,Value属性为您提供了comboBox单元格的ValueMember,而不是comboBox中的DisplayMember。相反,您需要访问FormattedValue(实际上可用于所有单元格)。下面的代码演示了如何执行此操作(沿着其他一些小的改进):
在这里,我只是获取FormattedValue并使用MessageBox显示它,但对于您来说,只需将它分配给单元格即可。
我还为循环使用了稍微紧凑一些的语法,并为网格的NewRow添加了一个检查(它可以包含空值,这可能会破坏一些东西)。
另外,有一点很有用,那就是一旦有了单元格,就可以得到单元格的实际类型,如下所示:
在解决问题时,这给了你更多的选择。作为最后一个选项,你甚至可以访问EditingControl(组合框列中的实际下拉列表),这也给了你更多的选择。
你不应该需要这些在你的情况下,但他们是有用的了解。
8yoxcaq72#