我有一个简单的应用程序。 我的应用程序加载一个csv,改变一些数据并导出到excel。
当我点击" Exportar ..."它出口。 代码如下。
private void cmdExport_Click(object sender, EventArgs e)
{
cmdExport.Enabled = false;
cmdSelecionar.Enabled = false;
//Copy DataGridView to clipboard
dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
dgvMain.MultiSelect = true;
dgvMain.SelectAll();
DataObject dataObj = dgvMain.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
//Open an excel instance and paste the copied data
Excel.Application xlexcel;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkBook = xlexcel.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
CR.Select();
xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
cmdSelecionar.Enabled = true;
}
问题: 当我导出时,它会在开头添加一个空白列," A"柱。 为什么会这样? 我的代码怎么了?
excel打印如下:
答案 0 :(得分:2)
您的DataGridView上有行标题,您可以在图片中看到它作为浅蓝色突出显示的列,顶部有>
箭头。
如果您不需要,可以使用dgvMain.RowHeadersVisible = false;
或者,您可以在粘贴后删除第一列:
Excel.Range range = (Excel.Range)xlWorkSheet.get_Range("A1", Missing.Value);
range.EntireColumn.Delete(Missing.Value);
答案 1 :(得分:0)
您正在从剪贴板粘贴,这很好,但我怀疑剪贴板中的数据包含空白列。
答案 2 :(得分:0)
您可以查看以下内容是否有效:
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[A1, 1];
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[0, 1];