• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Lập trình Microsoft Office Excel

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi vo_minhdat2007 » T.Ba 24/08/2010 3:51 pm

Do trong Microsoft.Office.Interop.Excel và System.Data đều có cùng đối tượng tên là DataTable. Vậy bạn chỉ dùng Import 1 thứ, thứ kia phải gõ tường minh.



mrgatay
Bài viết: 6
Ngày tham gia: T.Ba 19/10/2010 2:41 pm
Been thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi mrgatay » T.Bảy 13/11/2010 10:54 am

Cho mình hỏi! Mình muốn lấy dữ liệu trong file excel từ dòng 17 xuống dưới dòng 30 và từ cột B tới cột L thì làm thế nào?
Tức là làm thế nào để mình lấy ra được dòng và cột của file excel?

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 13/11/2010 11:41 am

Bài này hướng dẫn rõ rồi mà bạn?

viewtopic.php?f=23&t=7762#p48516

mrgatay
Bài viết: 6
Ngày tham gia: T.Ba 19/10/2010 2:41 pm
Been thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi mrgatay » T.Sáu 19/11/2010 2:22 pm

Khi mình làm Import ở máy mình và một số máy khác thì chương trình chạy OK. Nhưng trong phòng mình có 1 máy, không hiểu sao chạy toàn báo lỗi này :Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
ở trong workbooks.Open. Cái này thấy có nhiều tham số thật, ko biết điền thế nào?

mrgatay
Bài viết: 6
Ngày tham gia: T.Ba 19/10/2010 2:41 pm
Been thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi mrgatay » T.Sáu 19/11/2010 3:25 pm

Sửa lỗi của chuối này :Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
Vào trong control panel sửa Current format chọn english (United States) là oki

hoangvantmb
Thành viên chính thức
Thành viên chính thức
Bài viết: 12
Ngày tham gia: T.Tư 12/08/2009 9:21 am
Has thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi hoangvantmb » T.Ba 23/11/2010 10:12 am

Cho mình hỏi làm sao mình có thể Copy một dòng và chèn , vì mục đích của mình là muốn lấy định dạng của dòng trên để điền thêm dữ liệu?
Mình search trên mạng mà không thấy
Help!

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi thuyan1990 » T.Năm 17/03/2011 10:07 am

bạn minhdat cho hỏi tại sao khi mình dùng App.Quit thì trong process vẫn còn trình EXCEL.EXE vậy có phải mình phải dùng thêm kill để tắt nữa không. Với lại có cách nào mình save tập tin excel với phần mở rộng trùng với phần mở rộng của excel hiện tại không??

Tại hiện giờ phần mở rộng của bạn là .xlsx vậy nếu làm theo ý tôi nói thì khi bạn dùng office xp thì sẽ là .xls.

Mong bạn cho ý kiến thanks!

canthoit
Bài viết: 3
Ngày tham gia: T.Tư 15/06/2011 12:00 pm
Has thanked: 1 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi canthoit » T.Sáu 01/07/2011 11:56 pm

Các anh có thể chỉ cho em biết lập trình đặt password cho file Excel này được không ạ! Đặt password và gỡ bỏ pass của nó! :)

canthoit
Bài viết: 3
Ngày tham gia: T.Tư 15/06/2011 12:00 pm
Has thanked: 1 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi canthoit » T.Ba 12/07/2011 2:56 pm

Vậy cho em hỏi đoạn lệnh như sau "if (doc.ProtectionType != WdProtectionType.wdNoProtection){///////}"
Đoạn lệnh đó kiểm tra xem file MS Word có bảo vệ hay là không. vậy nếu là excel thì làm như thế nào ạ! Cái này em viết bằng C# đấy ạ!
Chỉ thay thế trong dấu "if(...)" thôi nhé! ^^.

totite3001
Bài viết: 2
Ngày tham gia: T.Tư 16/11/2011 10:52 am
Has thanked: 2 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi totite3001 » T.Tư 16/11/2011 11:09 am

vo_minhdat2007 đã viết:IV. Thao tác với tập tin Excel :
Bây giờ đề yêu cầu bạn thế này :

Excel.jpg


- Cho sẵn file Excel tên là Input.xlsx ở thư mục My Document có 1 worksheet, với dữ liệu sau :
- Trong form của bạn có 1 DataGridView có 2 cột là Họ và tên và Địa chỉ và 1 button.
- Người dùng lần lượt nhập tên và địa chỉ vào DataGridView. Cuối cùng nhấn Button.
- Dùng mẫu thiết kế đã cho, nhập vào Excel nội dung ấy (STT chương trình tự gán), cuối cùng save thành tập tin Output.xlsx cũng ở thư mục My Document.

Mã: Chọn hết

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        'Gọi một chương trình EXCEL        Dim App As New Application        'Hiện chương trình        App.Visible = True        'Gọi WBook là biến quản lí workbook tạo bằng cách         'mở tập tin Input.xls trong thư mục My Document        Dim WBook As Workbook = App.Workbooks.Open( _            My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Input.xlsx")        'Gọi WSheet là biến quản lí worksheet đầu tiên trong WBook.        'Ngoài ra có thể quản lí theo tên của worksheets        'bằng cách thay 1 ở code bên dưới thành tên worksheet.        Dim WSheet As Worksheet = WBook.Worksheets(1)        'Gán các giá trị        For i As Integer = 0 To dgvData.RowCount - 2            WSheet.Range("A" & i + 3).Value = i + 1            WSheet.Range("B" & i + 3).Value = dgvData.Rows(i).Cells(0).Value            WSheet.Range("C" & i + 3).Value = dgvData.Rows(i).Cells(1).Value        Next        Dim OutputPath As String = _            My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Output.xlsx"        'Trước khi lưu, hãy xoá tập tin nếu có        'để Excel không hỏi người dùng khi ghi đè        If IO.File.Exists(OutputPath) Then _            IO.File.Delete(OutputPath)        'Lưu thành tập tin Output.xlsx cũng trong My Document        WBook.SaveAs(OutputPath)        'Nếu muốn lưu thành cùng tên thì bạn chỉ cần dùng code sau :        'WBook.Save()    End Sub


Tóm tắt :

Mã: Chọn hết

 Dim <tên biến> As Workbook = App.Workbooks.Open(Path)WBook.SaveAs(OutputPath)WBook.Save


ở đây muốn hiện 1 OpenFileDialog khi mở và SaveFileDialog khi Lưu mình làm như thế nào anh ?

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 16/11/2011 5:24 pm

Bạn cứ việc hiện Dialog bình thường, sau đó thay vì dùng đường dẫn cố định như code thì bạn thay bằng thuộc tính FileName của Dialog đó là được :)

hoanganhcuong87
Bài viết: 5
Ngày tham gia: T.Sáu 30/09/2011 9:05 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi hoanganhcuong87 » CN 08/01/2012 10:50 am

Mình có đoạn code từ VBA mong các bạn chuyển sang C# VSTO hộ mình với. Mình là dân Công Trình đang mày mò học.Hì

Mã: Chọn hết

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tim As Range
If Not Application.Intersect(Target, [c7:c17]) Is Nothing Then
    Set tim = Sheet2.[b3:b10].Find(Target, LookAt:=xlWhole)
        If tim Is Nothing Then
            frmcsdl.Show
        Else
            Target.Offset(, 1) = Sheet2.[b3:b10].Find(Target, LookAt:=xlWhole).Offset(, 1)
        End If
End If
End Sub 


Mong mọi người giúp đỡ!

nhunguyenvan
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Sáu 06/06/2008 2:29 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi nhunguyenvan » T.Sáu 13/01/2012 10:59 am

Hi các bạn mình mới nghiên cứu cái này, mình thấy rất hay và rất mong sự giúp đỡ của các bạn, mình thấy bạn Đạt hướng dẫn ngay từ đầu nhưng mình làm theo hướng dẫn thì mình đã gặp ngay lỗi từ đầu rồi, chán quá. Mình cài Office 2010, và vs2008. Mình có kèm theo file ảnh, mong các bạn chỉ giúp. Thanks.
À ý của mình là mình viết 1 chương trình trên vb.net và lấy dữ liệu từ 1 file excel, nhưng mình đã gặp lỗi như sau mà không biết làm thế nào, rất mong các bạn giúp đỡ.
Tập tin đính kèm
1.JPG
2.JPG
3.JPG

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 13/01/2012 5:37 pm

Bạn quên Import thư viện, mình có ghi ở bài đầu mà.

nhunguyenvan
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Sáu 06/06/2008 2:29 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi nhunguyenvan » T.Hai 16/01/2012 7:36 am

Mình đã Imports rồi mà, ở hình đầu tiên ý. Mình đã đưa dòng "Imports Microsoft.Office.Interop.Excel" lên đầu và trên cả Public Class rồi mà.
Còn trong menu Project\Add Reference thẻ COM mình cũng có 3 mục như bạn yêu cầu rồi mà (ở hình thứ 2 ý) mình chụp ở thẻ Recent là cho nó gần nhau và cho dễ chụp thôi. Hay do bộ cài của mình, mình dùng VS2008, mình cài full. Có gì giúp mình với. Thanks.

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 16/01/2012 10:05 am

Bạn ghi lỗi nó báo thử xem?

nhunguyenvan
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Sáu 06/06/2008 2:29 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi nhunguyenvan » T.Hai 16/01/2012 1:46 pm

Cám ơn bạn mình cài bản VB2010 thì nó không báo lỗi như vậy nữa rồi, có gì mình sẽ hỏi bạn sau. Thanks bạn nhiều nhé.

nhunguyenvan
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Sáu 06/06/2008 2:29 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi nhunguyenvan » T.Tư 18/01/2012 7:45 am

vo_minhdat2007 đã viết:Do trong Microsoft.Office.Interop.Excel và System.Data đều có cùng đối tượng tên là DataTable. Vậy bạn chỉ dùng Import 1 thứ, thứ kia phải gõ tường minh.

Tường mình là như thế nào, cụ thể bạn cho 1 ví dụ đi. Mình Imports System.Data thì đối tượng là DataTable thì dùng được rồi. Nhưng mình dùng Imports Microsoft.Office.Interop.Excel thì không dùng được thằng Datatable nữa. Bạn giúp mình đoạn code này với. Thanks
  1. Imports System.Data
  2. Imports System.Data.OleDb
  3. Imports System.Data.SqlClient
  4. Imports Microsoft.Office.Interop.Excel
  5. Public Class Form1
  6.        Public conn As New SqlConnection
  7.        'Trước đó mình có 1 Sub load dữ liệu từ file Excel lên datagrid mình đã làm được rồi. Nhưng do có "Imports Microsoft.Office.Interop.Excel" nên Sub sau lại không dùng được "Dim dt As New DataTable".
  8.        'Sub này là update từ SQL lên datagrid
  9.        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EvantArgs) Handles Button1.Click
  10.                  Conn.Connectionstring=MyConnectString
  11.                  Dim da As SqlDataAdapter=Nothing
  12.                  Dim dt As New DataTable
  13.                  Dim sql As String ="Select * from nhanvien"
  14.                  da=new SqlDataAdapter(sql,conn)
  15.                  da.Fill(dt)
  16.                  DatagridView1.DataSource=dt
  17.        End Sub
  18. End Class
  19.  

Đoạn code trên sẽ bị gạch chân mầu xanh từ DataTable, vậy cái này thì dùng cái gì hả bạn?

Mình đang viết 1 chương trình như thế này, mình load dữ liệu từ 1 file Excel lên DataGrid rồi sau đó từ DataGrid lưu vào csdl SQL 2005. Trong quá trình xử lý mình có check đến bản ghi đã tồn tại trong SQL rồi vậy nên mình không muốn load luôn dữ liệu từ Excel vào SQL ngay, nếu cách đó mà check được bảng ghi đã tồn tại thì hay quá, mong các bạn giúp đỡ.

FlyingFox
Guru
Guru
Bài viết: 772
Ngày tham gia: T.Tư 20/04/2011 9:56 am
Been thanked: 311 time

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi FlyingFox » T.Năm 19/01/2012 7:16 am

Bạn viết lại như sau
  1. Dim dt As New System.Data.DataTable()

Nếu bạn chĩ muốn đọc dữ liệu từ Excel thì nên dùng thẵng OleDb đễ kết nối sẽ tốt hơn so với dùng Interop Excel, sau đó có thễ dùng SqlBulkCopy đễ import data vào SQL Sever database.

nhunguyenvan
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Sáu 06/06/2008 2:29 pm

Re: Lập trình Microsoft Office Excel

Gửi bàigửi bởi nhunguyenvan » T.Năm 19/01/2012 3:46 pm

Thanks bạn nhiều nhé.


Quay về “[.NET] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách