我真的需要帮助...我在互联网上找不到任何例子 我正在使用DevExpress GridView我需要将它发送到excel并且我遇到问题循环到每个单元格和列,因为DevExpress包含不同的方法然后DataGridView
这是我正在尝试编写的代码..我真的感谢您的帮助
public class Form1 : System.Windows.Forms.Form
{
Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
string FirstName = "First Name";
string FatherName = "Father Name";
string LastName = "Last Name";
}
public Form1()
{
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth = 20;
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
private void simpleButton1_Click(object sender, System.EventArgs e)
{
try
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=C:\\Users\\pc\\Documents\\Emp.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes\"";
con.Open();
DataTable dtSchema;
dtSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
OleDbCommand Command = new OleDbCommand ("select * FROM [" + dtSchema.Rows[0]["TABLE_NAME"].ToString() + "]", con);
OleDbDataAdapter da = new OleDbDataAdapter(Command);
DataSet ds = new DataSet ();
da.Fill(ds);
dataGrid1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
private void ExportBtn_Click(object sender, System.EventArgs e)
{
for (int i = 1; i < gridView3.Columns.Count + 1; i++)
{
//ExcelApp.Cells[1, i] = gridView3.Columns[i].HeaderStyleName;
}
for (int i = 0; i< gridView3.RowCount - 1; i++)
{
for (int j = 0; j < gridView3.Columns.Count; j++)
{
ExcelApp.Cells[i + 2, j + 1] = gridView3.Columns[j].ToString();
}
}
ExcelApp.ActiveWorkbook.SaveCopyAs("C:\\Users\\pc\\Emp.xlsx");
ExcelApp.ActiveWorkbook.Saved = true;
ExcelApp.Quit();
}
我的问题是在导出按钮中点击事件..没有Row()
这样的东西答案 0 :(得分:20)
要了解XtraGrid的各种导出方法,请浏览Export Methods and Settings
使用GridControl.ExportToXls(String)方法
示例代码段:
private void mnuExportTable_ItemClick_1(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
using (SaveFileDialog saveDialog = new SaveFileDialog())
{
saveDialog.Filter = "Excel (2003)(.xls)|*.xls|Excel (2010) (.xlsx)|*.xlsx |RichText File (.rtf)|*.rtf |Pdf File (.pdf)|*.pdf |Html File (.html)|*.html";
if (saveDialog.ShowDialog() != DialogResult.Cancel)
{
string exportFilePath = saveDialog.FileName;
string fileExtenstion = new FileInfo(exportFilePath).Extension;
switch (fileExtenstion)
{
case ".xls":
gridControl.ExportToXls(exportFilePath);
break;
case ".xlsx":
gridControl.ExportToXlsx(exportFilePath);
break;
case ".rtf":
gridControl.ExportToRtf(exportFilePath);
break;
case ".pdf":
gridControl.ExportToPdf(exportFilePath);
break;
case ".html":
gridControl.ExportToHtml(exportFilePath);
break;
case ".mht":
gridControl.ExportToMht(exportFilePath);
break;
default:
break;
}
if (File.Exists(exportFilePath))
{
try
{
//Try to open the file and let windows decide how to open it.
System.Diagnostics.Process.Start(exportFilePath);
}
catch
{
String msg = "The file could not be opened." + Environment.NewLine + Environment.NewLine + "Path: " + exportFilePath;
MessageBox.Show(msg, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
String msg = "The file could not be saved." + Environment.NewLine + Environment.NewLine + "Path: " + exportFilePath;
MessageBox.Show(msg, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
参考:
Exporting Several XtraGrid Controls to a Single Excel File
答案 1 :(得分:0)
尝试以下代码。 SaveFileDialog1是工具 还添加了必需的参考文献 -
Try
Dim sv As New SaveFileDialog1
SaveFileDialog1.Filter = "Excel Workbook|*.xlsx"
If SaveFileDialog1.ShowDialog() = DialogResult.OK And SaveFileDialog1.FileName <> Nothing Then
If SaveFileDialog1.FileName.EndsWith(".xlsx") Then
Dim path = SaveFileDialog1.FileName.ToString()
GridControlAFP.ExportToXlsx(path)
Dim xlApp As New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
xlWorkBook = xlApp.Workbooks.Open(path)
xlWorkSheet = xlWorkBook.Sheets("Sheet")
xlWorkSheet.Range("A1:XFD1").EntireColumn.AutoFit()
xlWorkBook.Save()
xlWorkBook.Close()
xlApp.Quit()
End If
MessageBox.Show("Data Exported to :" + vbCrLf + SaveFileDialog1.FileName, "Business Intelligence Portal", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
SaveFileDialog1.FileName = Nothing
End If
Catch ex As Exception
End Try
答案 2 :(得分:0)
selectgridvalues
函数以数据表格式返回数据库中的值。
在显示按钮中调用此函数可在gridcontrol中设置这些值。
导出按钮将值以.xlsx格式导出到Excel工作表中
//function to get values from DataTable to gridControl Devexpress
public DataTable selectgridvalues()
{
SqlConnection con;
con = new SqlConnection();
con.ConnectionString = "server='SERVER';uid='sa';pwd='1234';database='DBName'";
con.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from Tablename order by id ", con);
DataTable dt = new DataTable();
adp.Fill(dt);
gridControl1.DataSource =dt;
}
//code on showdatagridview values button
public void buttonShow_Click(object sender, EventArgs e)
{
gridControl1.DataSource = selectgridvalues();
}
//code on export to excel button
private void buttonExportExcel_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialogExcel = new SaveFileDialog();
saveFileDialogExcel.Filter = "Excel files (*.xlsx)|*.xlsx";
if (saveFileDialogExcel.ShowDialog() == DialogResult.OK)
{
string exportFilePath = saveFileDialogExcel.FileName;
gridControl1.DataSource = selectgridvalues();
gridControl1.ExportToXlsx(exportFilePath);
}
}