excel_file.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import hashlib
  2. import importlib.util
  3. try:
  4. import unstructured # noqa: F401
  5. from langchain_community.document_loaders import UnstructuredExcelLoader
  6. except ImportError:
  7. raise ImportError(
  8. 'Excel file requires extra dependencies. Install with `pip install "unstructured[local-inference, all-docs]"`'
  9. ) from None
  10. if importlib.util.find_spec("openpyxl") is None and importlib.util.find_spec("xlrd") is None:
  11. raise ImportError("Excel file requires extra dependencies. Install with `pip install openpyxl xlrd`") from None
  12. from embedchain.helpers.json_serializable import register_deserializable
  13. from embedchain.loaders.base_loader import BaseLoader
  14. from embedchain.utils.misc import clean_string
  15. @register_deserializable
  16. class ExcelFileLoader(BaseLoader):
  17. def load_data(self, excel_url):
  18. """Load data from a Excel file."""
  19. loader = UnstructuredExcelLoader(excel_url)
  20. pages = loader.load_and_split()
  21. data = []
  22. for page in pages:
  23. content = page.page_content
  24. content = clean_string(content)
  25. metadata = page.metadata
  26. metadata["url"] = excel_url
  27. data.append({"content": content, "meta_data": metadata})
  28. doc_id = hashlib.sha256((content + excel_url).encode()).hexdigest()
  29. return {
  30. "doc_id": doc_id,
  31. "data": data,
  32. }