Worksheet worksheet = workbook.Worksheets[0];
- worksheet的索引是从0开始的
- worksheet.LastRow是从1开始的
1 public void InsertDataTable() 2 { 3 Workbook workbook = new Workbook(); 4 workbook.LoadFromFile("F:/Row1.xlsx"); 5 Worksheet worksheet = workbook.Worksheets[0]; 6 DataTable table = new DataTable(); 7 DataColumn column; 8 for (int i = 1; i <= worksheet.LastColumn; i++) 9 { 10 column = new DataColumn(); 11 column.DataType = System.Type.GetType("System.String"); 12 column.ColumnName = i.ToString(); 13 table.Columns.Add(column); 14 } 15 button1.Text = "worksheet.LastRow = " + worksheet.LastRow.ToString(); 16 worksheet.InsertDataTable(table, true, 2, 1); 17 CellRange ranges = worksheet.Range[worksheet.FirstRow, worksheet.FirstColumn, 18 worksheet.LastRow+1, worksheet.LastColumn]; 19 DataTable dataTable = worksheet.ExportDataTable(ranges, true, true); 20 dataGridView1.DataSource = dataTable; 21 }
- workshee.InsertDataTable(table,true,worksheet.LastRow,1);第三个参数,是第几行就把第几行替换掉。
- 这个试验我应该是做过,应该记住这个结果。第三个参数是谁就是把谁覆盖掉。只要不写SaveToFile就不会改变本地文件,只是这个dataTable里的数据被覆盖了
- 所以,我怎么能用table做表头,然后把第一行的数读出来呢?
TMD
- SaveToFile了他也会覆盖那行数据;另外SaveToFile能新建文件
- 有没有必要现在解决这个第一行的问题,好像还真有点必要。问题记下来,和周报一起问指路前辈
- 好像可以把单元格单独读出来在做点啥,我捋捋先
1 private void button1_Click(object sender, EventArgs e) 2 { 3 Workbook wb = new Workbook(); 4 wb.LoadFromFile("F:/datawrite.xlsx"); 5 Worksheet sheet = wb.Worksheets[4]; 6 DataColumn column = new DataColumn(); 7 column.Unique = false; 8 CellRange range = sheet.Range["A31"]; 9 label1.Text = range.Value.ToString(); 10 byte i = 1; 11 label4.Text = textBox1.Text + i.ToString(); 12 }
- 可以考虑把第一行数据拿出去,和table一起,新建一个文件。这个文件就是用来中转、读取第一行的。那么第一行程序就不能用datatable,可以用数组。把每个单元格的数据读出来放到数组里,在从数组里读出来写到新的文件里。有没有简单的办法,能做到再说。但这玩意是只读的啊,肯定是我方法不对
- 虽然还没精疲力竭,但有点烦躁了。我冷静冷静,干点别的,写个周报啥的