JBTALKS.CC

标题: 麻烦楼主删帖 [打印本页]

作者: Monki0115    时间: 2014-11-3 01:02 PM
标题: 麻烦楼主删帖
本帖最后由 Monki0115 于 2014-11-21 02:36 PM 编辑

我用着visual studio 2013 ultimate.
我想update datagridview 里的data去已经存在的excel file.
因为会持续性的update,所以不可以固定rows 和 columns.


  1. If My.Computer.FileSystem.FileExists("d:\test1.xlsx") Then

  2.             Try

  3.                 Dim xls As New Excel.Application
  4.                 Dim Wbook As Excel.Workbook
  5.                 Dim Wsheet As Excel.Worksheet

  6.                 xls.Workbooks.Open("d:\test1.xlsx")
  7.                 Wbook = xls.ActiveWorkbook
  8.                 Wsheet = Wbook.ActiveSheet


  9.                 Dim i As Integer = 0

  10.                 If lastrow >= 10 Then
  11.                     Dim curRow As Integer = lastrow + 1
  12.                     For rowlength As Integer = 0 To DataGridView1.Rows.Count - 1
  13.                         For columnlength As Integer = 0 To DataGridView1.Columns.Count - 1
  14.                             Wsheet.Cells(curRow, columnlength + 1).Value =
  15.                                 DataGridView1.Rows(rowlength).Cells(columnlength).Value

  16.                         Next
  17.                     Next
  18.                 End If

  19.                 Wbook.Save()
  20.                 xls.closed()

  21.             Catch ex As Exception
  22.                 MsgBox(ex.ToString)
  23.             End Try
复制代码

作者: Monki0115    时间: 2014-11-3 01:05 PM
问题是它会要求overwrite而不是update 原来的文件。
摆脱帮帮我
作者: zechs    时间: 2014-11-3 02:08 PM
Wbook.DisplayAlerts = False

在save前加这句,试试看。
作者: Monki0115    时间: 2014-11-3 02:22 PM
'DisplayAlerts ' on type 'Workbook' not found.
出现这个error ~ 不过还是谢谢你

作者: zechs    时间: 2014-11-3 04:26 PM
xls.DisplayAlerts = False

这个呢?
作者: Monki0115    时间: 2014-11-3 05:58 PM
一样 no found 哦 ~
作者: 燕子不会飞    时间: 2014-11-3 07:09 PM
试试看把lastrow 改成 objExcel.ActiveCell.Row + 1 看看

你需要的是不是只要有新data进来,就自动加新data不影响旧data???

我的理解能力比较不好

http://technet.microsoft.com/en-us/library/ee692869.aspx
作者: Monki0115    时间: 2014-11-3 09:52 PM
你的意思是这样么?
我是把 lastrow dim as object 哦·
差不多意思,总之要把旧data保留,然后把新data加进去.
  1. If My.Computer.FileSystem.FileExists("d:\test1.xlsx") Then

  2.             Try

  3.                 Dim xls As New Excel.Application
  4.                 Dim Wbook As Excel.Workbook
  5.                 Dim Wsheet As Excel.Worksheet

  6.                 xls.Workbooks.Open("d:\test1.xlsx")
  7.                 Wbook = xls.ActiveWorkbook
  8.                 Wsheet = Wbook.ActiveSheet


  9.                 Dim i As Integer = 0

  10.                 If lastrow >= 10 Then
  11.                     Dim curRow As Integer = lastrow.ActiveCell.Row + 1
  12.                     For rowlength As Integer = 0 To DataGridView1.Rows.Count - 1
  13.                         For columnlength As Integer = 0 To DataGridView1.Columns.Count - 1
  14.                             Wsheet.Cells(curRow, columnlength + 1).Value =
  15.                                 DataGridView1.Rows(rowlength).Cells(columnlength).Value

  16.                         Next
  17.                     Next
  18.                 End If

  19.               
复制代码
可是还是有error

xx.PNG (17.43 KB, 下载次数: 1)

xx.PNG


作者: TSHsoft    时间: 2014-11-3 11:38 PM
记录最后一笔资料是第几个row在第一个row或者一个特定地方,下次update的时候就读取最后一笔资料到哪个row了,然后再从那个row过后继续update咯~
作者: tohkl14    时间: 2014-11-4 12:16 AM
你是用MICROSOFT的LIBRARY还是THIRD PARTY的?建议你用EPPLUS。。。
作者: Monki0115    时间: 2014-11-4 02:22 PM
TSHsoft 发表于 2014-11-3 11:38 PM
记录最后一笔资料是第几个row在第一个row或者一个特定地方,下次update的时候就读取最后一笔资料到哪个row了 ...

可以写成code吗?不是很明白.
作者: Monki0115    时间: 2014-11-4 02:23 PM
tohkl14 发表于 2014-11-4 12:16 AM
你是用MICROSOFT的LIBRARY还是THIRD PARTY的?建议你用EPPLUS。。。

我是用 microsoft的, EPPLUS是?
作者: tohkl14    时间: 2014-11-4 03:49 PM
Monki0115 发表于 2014-11-4 02:23 PM
我是用 microsoft的, EPPLUS是?

THRID PARTY 的。去codeplex找应该有。。。
作者: Monki0115    时间: 2014-11-4 08:53 PM
tohkl14 发表于 2014-11-4 03:49 PM
THRID PARTY 的。去codeplex找应该有。。。

找到了,可是好像跟vb的不太一样, 有办法可以放进现在的code么?
我怕不兼容而已。




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5