Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Turning scattered broker data into clean, organized, and live-updating spreadsheets.

SheetWeaver

SheetWeaver converts bloated, static portfolio exports from brokers into clean, live-updating, and organized spreadsheets.


SheetWeaver preview

Generated Output

Features

  • πŸ“ˆ Live Updates: Injects GOOGLEFINANCE formulas so your portfolio always reflects real-time market data.
  • πŸ”’ Privacy-Focused: SheetWeaver does not use a database or cloud backend. Portfolio files are processed locally on your device.
  • ⚑ Lightweight & Fast: Built on Tauri, utilizing system native webviews for a minimal footprint.
  • πŸ†“ Free & Open Source: Free forever. No subscriptions, and community-driven.

Supported Brokers

Currently, SheetWeaver supports Groww stock-holding exports. Mutual funds and additional brokers are planned.

Requirements

  • Windows 10 or later
  • Google account for Google Sheets
  • A supported broker portfolio export

πŸ“₯ Download

OS Architecture Format Download
Windows x64 .exe Download SheetWeaver .exe
Download
Download
Need the MSI installer?
Download SheetWeaver MSI

The .msi package is an alternative for users who specifically require the Windows Installer format.

Note

Windows SmartScreen warning: SheetWeaver is a new application and is currently unsigned, so Windows may display a security warning when running the installer. When you run the installer, Windows may show a blue "Windows protected your PC" warning.

Click "More info" β†’ "Run anyway" to proceed.

Windows SmartScreen warning

Click "More info" β†’ "Run anyway" to proceed.
Click Run and proceed.

View all releases β†’

How to Use

1. Log in to your Groww portal and download the report

Groww : https://groww.in/

Click the profile picture (at top right) and then click on Reports
Select the Stocks-Holdings and then click Download

2. Open SheetWeaver then upload the downloaded report

3. Upload the generated Excel file to Google Drive and open it with Google Sheets

Tip

You can convert the generated data into a table and sort or filter it by metrics such as maximum amount invested, highest profit, and more.

You can also export the spreadsheet as a PDF

Limitations

  • Broker report formats may change without notice.
  • Not every security may be supported by GOOGLEFINANCE.
  • Market data may be delayed, unavailable, or incomplete.
  • Generated formulas may behave differently depending on the spreadsheet application being used.

⚠️ Warning & Disclaimer

Important

SheetWeaver is provided as an open-source utility for organizing and transforming portfolio data. It is not financial, investment, tax, accounting, or legal advice.

While reasonable care is taken when developing and testing the application, SheetWeaver may contain bugs, incorrect calculations, unsupported securities, parsing errors, or compatibility issues caused by changes to broker reports, spreadsheet software, external services, or market-data providers.

Always verify generated values against your broker's original records before using them for financial, tax, investment, or other consequential decisions.

The maintainers of SheetWeaver are not responsible for financial losses, data loss, incorrect calculations, missed transactions, incorrect portfolio values, or any other direct or indirect consequences resulting from the use of this software, to the extent permitted by applicable law.

❔ FAQ

Q: Why should I use this when I can directly download the excel file from the platform ?

A: Two main reasons! First, you only need to use this tool once. After that, your Excel file will automatically sync with live market data without any extra effort on your end.
Second, the default files provided by brokers are typically bloated, colorless, disorganized, and completely static.

See the difference for yourself
Groww dashboard
Static, raw export Groww reports page
Well-formatted, color-coded, and live-updated

Q: Where is the user data stored, and what about privacy?

A: No database is used as no data is stored to make things fast and you can download the desktop app which is fully offline so your data stays on your device only.

Q: Why is no data showing in Microsoft Excel?

A: The GOOGLEFINANCE function is supported by Google Sheets and is not natively supported by Microsoft Excel. As a result, Excel cannot evaluate =GOOGLEFINANCE() formulas and may return an error such as #NAME?.

If you want the generated spreadsheet to update automatically using GOOGLEFINANCE, open it in Google Sheets.

Q: Why are some stocks highlighted in red and marked "Update Manually"?

A: This means that SheetWeaver was unable to find a supported ticker symbol for that stock, or that the stock is not supported by GOOGLEFINANCE.

If you want the market price to update automatically, you can manually find the correct ticker symbol and add it to the spreadsheet. Otherwise, SheetWeaver will use the current value from the original broker report as a fallback. Keep in mind that this value may not reflect the latest market price.

Tip

You can check whether a stock or security is supported by searching for it on GOOGLE FINANCE

Q: Is the market data real-time?

A: Not necessarily. GOOGLEFINANCE determines the availability and update behavior of market data. Some prices may be delayed, unsupported, or temporarily unavailable.

System Architecture

πŸ’¬ Technical Decisions & Rationale

1. Why use the Buy Price as a fallback value for Live Price instead of the Closing Price provided in the broker report?

The Google Sheets Caching Quirk: If you are importing this .xlsx file into Google Sheets, Google often evaluates bulk finance functions as #N/A for a brief second while the data fetches. If your fallback is a hardcoded string literal (e.g., injecting 135.52 directly into the formula), Sheets sometimes caches the fallback evaluation and stops trying to poll the live API.

livePriceCell.value = { 
 formula: `IFERROR(GOOGLEFINANCE("${ticker}", "price"), C${rowIndex})` 
} as ExcelJS.CellValue;

For example, if we used a hardcoded value instead of a cell reference, Sheets would just return the hardcoded value and skip fetching the live stock price:

=IFERROR(GOOGLEFINANCE("GOOG:NASDAQ", "price"), C3) # βœ”οΈ Will fetch the price first
=IFERROR(GOOGLEFINANCE("GOOG:NASDAQ", "price"), 0) # ❌ Skips calling API and returns 0

2. Why GOOGLEFINANCE?

We chose GOOGLEFINANCE because it was the simplest option to integrate with SheetWeaver and provides broad compatibility across devices through Google Sheets, without requiring SheetWeaver to maintain its own market-data infrastructure.

An alternative was to use Microsoft Excel's financial functions, but some of these features require a Microsoft 365 subscription.

For users who prefer Excel and only want to use it for documentation, Microsoft 365 provides functions such as STOCKHISTORY:

=STOCKHISTORY("AAPL", start_date, end_date)

For a practical example, see this Reference video

3. Why Tauri over Electron ?

The project currently favors Tauri because of its smaller runtime footprint and its suitability for a lightweight desktop application.

Parameter Electron.js Tauri
SheetWeaver size after installation ~700 MB ~15 MB
Performance Resource heavy Native & Fast

Note

The size figures above are project-specific observations and can change across versions and build configurations. They should not be treated as universal Electron-vs-Tauri benchmarks.

πŸ—ΊοΈ Roadmap

  • Groww stock portfolio support
  • Mutual fund support
  • Integrate additional broker platforms
  • Manual ticker symbol entry
  • Developer mode/API key support
  • Automatic ISIN lookup
  • Monthly portfolio reports
  • Linux Support

Development

TECHSTACK

Run the development server:

npm install
npm run dev

Open http://localhost:3000 with your browser to see the result.

Run the Tauri app:

npx tauri dev

Build the application yourself:

npx tauri build

🀝 Contributing

Contributions, bug reports, feature suggestions, and improvements are welcome.

πŸ’¬ Before You Contribute

  • For new features, major changes, or architectural changes, please start a discussion in the GitHub Discussions tab before opening a pull request.
  • This helps us discuss the idea, avoid duplicated work, and agree on an approach before implementation.
  • For small bug fixes, documentation changes, and minor improvements, you can open a pull request directly.

πŸ”€ Pull Requests

When submitting a pull request:

  • Keep the changes focused and relevant.
  • Explain what was changed and why.
  • Link the related discussion or issue when applicable.
  • Make sure the project builds and works as expected.

πŸ“œ License

This project is licensed under a MIT License.

See the LICENSE file for more information.

⭐️ Show Your Support

If you found SheetWeaver helpful in organizing your investments, please consider giving the repository a star! It helps the project grow and makes it more visible to others who might benefit from it.

Releases

Packages

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /