显示InvalidArgument=“0”的值对于“index”无效。
报错点已经加红加粗
代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace demoprog
{
public partial class ucListView : UserControl
{
ListViewItem lv = new ListViewItem();
public ucListView()
{
InitializeComponent();
}
public void ShowResult(Result res)
{
int count = listView1.Items.Count + 1;//listview中序号的编写
ListViewItem lv = new ListViewItem();
lv.Text = count.ToString();
this.listView1.BeginUpdate();
for (int i = 0; i < 10; i++) //添加10行数据
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i; //通过与imageList绑定,显示imageList中第i项图标
lvi.Text = "subitem" + i;
lvi.SubItems.Add("第2列,第" + i + "行");
lvi.SubItems.Add("第3列,第" + i + "行");
this.listView1.Items.Add(lvi);
}
if (res.result == "OK")
{
lv.SubItems.Add(res.score.ToString());
lv.SubItems.Add(res.x.ToString());
lv.SubItems.Add(res.y.ToString());
lv.SubItems.Add(res.angle.ToString());
this.listView1.Items.Add(lv);
}
else
{
lv.ForeColor = Color.Red;
lv.SubItems.Add("");
lv.SubItems.Add("");
lv.SubItems.Add("");
lv.SubItems.Add("");
this.listView1.Items.Add(lv);
}
lv.SubItems.Add(res.result);
lv.SubItems.AddRange(new string[] { "", "", "" });
this.listView1.EndUpdate();
}
public void ExportToExcel()
{
ExportToExcel1(listView1);
}
/// <summary>
/// 具体导出的方法
/// </summary>
/// <param name="listView">ListView</param>
/// <param name="strFileName">导出到的文件名</param>
///
public static void ExportToExcel1(ListView pListView)
{
if (pListView.Items == null) return;
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = DateTime.Now.ToString("yyyy-MM-dd");
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0)
return;
//这里直接删除,因为saveDialog已经做了文件是否存在的判断
if (File.Exists(saveFileName))
File.Delete(saveFileName);
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
xlApp.Visible = false;
//填充列
for (int i = 0; i < pListView.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = pListView.Columns[i].Text.ToString();
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1]).Font.Bold = true;
}
//填充数据(这里分了两种情况,1:lv带CheckedBox,2:不带CheckedBox)
//带CheckedBoxes
if (pListView.CheckBoxes == true)
{
int tmpCnt = 0;
for (int i = 0; i < pListView.Items.Count; i++)
{
if (pListView.Items[i].Checked == true)
{
for (int j = 0; j < pListView.Columns.Count; j++)
{
if (j == 0)
{
worksheet.Cells[2 + tmpCnt, j + 1] = pListView.Items[i].Text.ToString();
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2 + tmpCnt, j + 1]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
else
{
worksheet.Cells[2 + tmpCnt, j + 1] = pListView.Items[i].SubItems[j].Text.ToString();
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2 + tmpCnt, j + 1]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
}
tmpCnt++;
}
}
}
else //不带Checkedboxe
{
for (int i = 0; i <= pListView.Items.Count; i++)
{
for (int j = 0; j <= pListView.Columns.Count; j++)
{
if (j == 0)
{
worksheet.Cells[2 + i, j + 1] = pListView.Items[i].Text.ToString();//在此处报错
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2 + i, j + 1]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
else
{
worksheet.Cells[2 + i, j + 1] = pListView.Items[i].SubItems[j].Text.ToString();
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2 + i, j + 1]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
}
}
}
object missing = System.Reflection.Missing.Value;
try
{
workbook.Saved = true;
workbook.SaveAs(saveFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet, missing, missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
}
catch (Exception e1)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + e1.Message);
}
finally
{
xlApp.Quit();
System.GC.Collect();
}
MessageBox.Show("导出Excle成功!");
}
我发现item的值一直是空的,但是如何才能动态添加数据到item里啊